Saturday, August 20, 2016¶

Get Lino applications to run from PyPI¶

I took #1143. The problem is the same as in Python Packaging: Data files are put properly in tar.gz file but are not installed to virtual environment.

I have been fiddling with these things in the past several times, but today I used the following important trick for the first time: I must use a suite of commands for testing this locally.

First I initialized a temporary virtualenv:

$go cosi$ virtualenv tmp/env
$. tmp/env/bin/activate$ pip install lino-cosi


And then I invoked the following suite many times:

$inv sdist$ pip uninstall lino-cosi -y
$pip install --no-index -f /home/luc/work/book/docs/dl/lino-cosi/ lino-cosi$ ls tmp/env/local/lib/python2.7/site-packages/lino_cosi/lib/sepa/config
ls: cannot access 'tmp/env/local/lib/python2.7/site-packages/lino_cosi/lib/sepa/config': No such file or directory


What I learned:

• Adding __init__.py files is definitively not a good idea.

• The important thing was include_package_data=True.

• I don’t need to specify package_data at all. Python looks at MANIFEST.in for deciding what the package data is. Observation confirmed by this thread.

• I could not confirm whether it is necessary to specify zip_safe=False because at least on my machine it did not use zip files. But here they say that if I don’t specify it, it might happen that the package gets installed as a zipped file, and in that case (and because I dont use pkg_resources) Lino would not find package data files.

• I added *.rst in MANIFEST.in so that README.rst gets included. I still get the warning “sdist: standard file not found: should have one of README, README.txt”

I removed *.py and *.po because it seems that these are not necessary.

• Which one is better? from distutils.core import setup or `from setuptools import setup? –> You should use setuptools if you can.

I then started (but not yet published) new versions to PyPI:

• Lino 1.7.6, Lino XL 1.7.5, Lino Cosi 0.0.4