Search code examples
pythonsetuptoolsdistutilssetup.py

distributing a command line application


Python newbie here. I'm trying to package a console app following this doc. To this end I created the following directory structure:

.
├── bin
│   └── txts
├── setup.py
└── txtstyle
    ├── __init__.py
    ├── ...
    └── [snip]

My app has one executable script which I placed under bin. I could successfully run

python setup.py sdist

and create a tar.gz. However I can't execute the script under bin due to import errors.

So my question is how can the script access the main module from under bin?


Solution

  • You need to install the package. This puts all modules in the global module path, and thus allows you to import them. For development, use python setup.py develop which links the modules into the module python instead of copying them. This way you don't need to reinstall the package each time you changed a module.

    There is a tool called virtualenv which creates virtual python environments. You can install modules into such environments without touching the global Python interpreter.