pyx-manager

Command-line project manager


Install
pip install pyx-manager==1.6.6

Documentation

Pyx, the task-oriented project manager

This project was primarily inspired by mix, project management tool for Elixir projects. It provides generic tasks for creating, testing, and running projects, available as command-line tools.

Now available on PyPI!

Installation

Pyx is now available on PyPI, so you can install it as any other package:

pip3 install pyx-manager

Just run pyx:

$ pyx
The Python task-oriented project manager.

Usage:
    pyx 
    pyx <task> [<task_args>...]

Tasks:
  new        Pyx project creation
  run        Pyx project execution
  release    Distribute your project to a PyPI repository
  test       Run tests in a Pyx project.
  version    Pyx project version managemen

Project management

You can create a new project with the following command:

pyx new my_project

This will create the following directory:

my_project/
├── .gitignore
├── main.py
├── my_project
│   └── __init__.py
├── Pipfile
├── .pyx
│   ├── project.py
│   └── tasks
├── README.md
├── setup.py
└── test
    └── test_my_project.py

Let's have a look at this. Your code goes in the directory named after your project; here it's ./my_project/. The reason behind this is that pyx will help you build your project as a package.

The entry point of a Pyx project is main.py. It will be run when calling pyx run at the root of the project. This task will actually activate the corresponding pipenv environment, and run the project there.

The test directory is where unit tests files should be placed. There's already one provided, ./test/test_my_project.py. The unit tests are run with pyx test, which will call the unittest module.

The project also contains a README.md and a .gitignore files, for git projects. It contains a setup.py for distributing your project to PyPI, which can be done through the pyx release task. The credentials and repository for distribution are stored in ./.pyx/project.py; although you don't need to write these: if Pyx cannot find them, you'll be prompted to type them.