20130226¶
Added method
lino.modlib.users.models.User.get_by_username()
.Added more tests to
lino_welfare.modlib.pcsw.tests.watchtim_tests
.Official sdist and upload to PyPI for Lino and Lino-Welfare
Which Python installer to use¶
Yet another move inspired by Two scoops of Django (see also docs/tickets/72) is to start using pip-installer and virtualenv.
In the Differences between distribute, distutils, setuptools and distutils2? post on Stackoverflow, Flimm writes rather clearly:
Here’s a summary of the Python packaging landscape in February 2013:
(…)
Distribute is a fork of Setuptools. It shares the same namespace, so if you have Distribute installed, import setuptools actually imports the package distributed with Distribute. It also includes an easy_install command-line tool, but it was designed to work well with Pip, which replaces it. It is also designed to work well with Python 2 or 3 or both. The latest version was released on 31 December 2012, so I would consider it alive and kicking. At the time of writing, I recommend this tool over other tools.
(…)
So in conclusion, out of all these options, I would recommend Distribute, unless your requirements are very basic and you only need Distutils. Distribute works very well with Virtualenv and Pip, tools that I highly recommend.
I’m still just a little bit confused about the relation between pip-installer and python-distribute.
As a first step I removed all Pythons from my computer and started from scratch.
Download Python 2.7.3 (for the moment I am not yet interested in Python 3)
https://pypi.python.org/pypi/distribute says: “distribute_setup.py is the simplest and preferred way on all systems.” So I downloaded distribute_setup.py and execute it using “the Python interpreter of my choice”:
c:\temp> python distribute_setup.py
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz
Extracting in c:\docume~1\luc\locals~1\temp\tmpxopjyi
Now working in c:\docume~1\luc\locals~1\temp\tmpxopjyi\distribute-0.6.35
Installing Distribute
...
creating build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
copying distribute.egg-info\zip-safe -> build\bdist.win32\egg\EGG-INFO
creating dist
creating 'dist\distribute-0.6.35-py2.7.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing distribute-0.6.35-py2.7.egg
creating c:\python27\lib\site-packages\distribute-0.6.35-py2.7.egg
Extracting distribute-0.6.35-py2.7.egg to c:\python27\lib\site-packages
Adding distribute 0.6.35 to easy-install.pth file
Installing easy_install-script.py script to c:\Python27\Scripts
Installing easy_install.exe script to c:\Python27\Scripts
Installing easy_install-2.7-script.py script to c:\Python27\Scripts
Installing easy_install-2.7.exe script to c:\Python27\Scripts
Installed c:\python27\lib\site-packages\distribute-0.6.35-py2.7.egg
Processing dependencies for distribute==0.6.35
Finished processing dependencies for distribute==0.6.35
After install bootstrap.
Creating c:\Python27\Lib\site-packages\setuptools-0.6c11-py2.7.egg-info
Creating c:\Python27\Lib\site-packages\setuptools.pth
Next step is unclear : pip first or virtualenv first? I chose “pip first”:
c:\temp\> curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
c:\temp\> python get-pip.py
Downloading/unpacking pip
Downloading pip-1.2.1.tar.gz (102Kb): 102Kb downloaded
Running setup.py egg_info for package pip
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs\_build'
no previously-included directories found matching 'docs\_build\_sources'
Installing collected packages: pip
Running setup.py install for pip
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs\_build'
no previously-included directories found matching 'docs\_build\_sources'
Installing pip-script.py script to c:\Python27\Scripts
Installing pip.exe script to c:\Python27\Scripts
Installing pip-2.7-script.py script to c:\Python27\Scripts
Installing pip-2.7.exe script to c:\Python27\Scripts
Successfully installed pip
Cleaning up...
After reading more about virtualenv I decided to not yet install it.
Removed my sitecustomize.py from my PYTHONPATH which until now was my self-made package installer.
For my own projects I need pip’s -e
switch:
C:\temp>pip install -e t:\hgwork\lino
Obtaining file:///t%7C%5Chgwork%5Clino
Running setup.py egg_info for package from file:///t%7C%5Chgwork%5Clino
Installing collected packages: lino
Running setup.py develop for lino
Creating c:\python27\lib\site-packages\lino.egg-link (link to .)
Adding lino 1.5.12 to easy-install.pth file
Installed t:\hgwork\lino
Successfully installed lino
Cleaning up...
Seems that installaing with the -e
switch does not automatically
install dependencies:
C:\temp>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import lino
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "t:\hgwork\lino\lino\__init__.py", line 32, in <module>
from .utils.xmlgen import html as xghtml
File "t:\hgwork\lino\lino\utils\__init__.py", line 61, in <module>
from dateutil import parser as dateparser
ImportError: No module named dateutil
It’s logical that I have to install them manually:
C:\temp>pip install python-dateutil
Downloading/unpacking python-dateutil
Downloading python-dateutil-2.1.tar.gz (152kB): 152kB downloaded
Running setup.py egg_info for package python-dateutil
Downloading/unpacking six (from python-dateutil)
Downloading six-1.2.0.tar.gz
Running setup.py egg_info for package six
Installing collected packages: python-dateutil, six
Running setup.py install for python-dateutil
Running setup.py install for six
Successfully installed python-dateutil six
Cleaning up...
C:\temp>pip install Django
Downloading/unpacking Django
Downloading Django-1.4.5.tar.gz (7.7MB): 7.7MB downloaded
Running setup.py egg_info for package Django
Installing collected packages: Django
Running setup.py install for Django
Successfully installed Django
Cleaning up...
Note: lxml needs some C compiler, and since I don’t have one
I cannot install it easily using pip (as it seems).
But since Lino currently no longer needs lxml, I’m leaving that for later.
Just had to adapt some modules below lino.utils.xmlgen
so that autodoc can continue to document
them if lxml isn’t installed.