Python packages distribution

Currently python options for code distribution  are bit messy as described here.   I spent some time to find right way how to create setup script, which will install external dependencies,   so here is the recipe for python3:

Create virtual virtual environment for your project:

virtualenv -p /usr/bin/python3 .

Then create setup.py file – two important things:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

Import setup function from setuptools,   this l enables to specify dependencies, which should be installed  automatically by pip or easy_setup.

setup(name='packageX',
      version='1.0',
      description='Sample package',
      packages=['x'],
      author='Your name',
      author_email='your email',
      requires= ['six (>=1.4.1)', 'bitarray (>=0.8.1)'],
      install_requires=['six>=1.4.1', 'bitarray>=0.8.1'],
      provides=['x']
      )

It is important that install_requires keyword is  included. Also note different syntax of version requirements  – requires vs install_requires . (requires and provides are probably not necessary ).

Test files,  readme, license  files etc.   specify them in MANIFEST.in file in root of distribution – something like this:

recursive-include tests *.txt *.py
exclude tests/something_temp.py
include README.md

Once all code is ready you can create distribution with command:

python setup.py sdist

This will create packed distribution in dist subdirectory  and then you can try to install in another virtual environment by:

pip install path/to/dist/packageX-1.0.0.tar.gz

 

Leave a Reply

Your email address will not be published. Required fields are marked *