[TIP] Tox problems with Python 2.5, 3.1 and 3.4

Marius Gedminas marius at gedmin.as
Mon Aug 26 00:50:36 PDT 2013


On Sun, Aug 25, 2013 at 12:23:27PM -0500, Skip Montanaro wrote:
> I've recently returned to a project (pylockfile) which I've let lay
> fallow for a long while. When I last worked on the project I used tox
> to run the unit test suite with Python 2.5, 2.6, 2.7, 3.1, 3.2, and
> 3.3.  This go 'round, I added Python 3.4 (cpython branch of Python
> development). Tox, pip and virtualenv were reinstalled with Python 3.4
> (though I didn't consciously mean to do that). I've reproduced the tox
> output below for the failing Python versions. Any input about how to
> solve any of these issues would be much appreciated.
> 
> Thanks,
> 
> Skip Montanaro
> 
> Python 2.5 fails with this output:
<snip>
>   Traceback (most recent call last):
>   File "<string>", line 67, in <module>
>   File "/Users/skip/local/lib/python2.5/md5.py", line 6, in <module>
>     from hashlib import md5
>   File "/Users/skip/local/lib/python2.5/hashlib.py", line 133, in <module>
>     md5 = __get_builtin_constructor('md5')
>   File "/Users/skip/local/lib/python2.5/hashlib.py", line 60, in
> __get_builtin_constructor
>     import _md5
> ImportError: No module named _md5

This tends to happen when your Python executable version doesn't match
your stdlib version.  More specifically, when you create a virtualenv,
and then upgrade the system Python.  Virtualenv symlinks the stdlib and
gets the new version, which expects a new Python binary.  Virtualenv
copies the Python binary, so you get the old one.

Is /Users/skip/local/lib/python2.5 a virtualenv, or a real Python
installation?

> Is it still possible to use tox to test w/ Python 2.5?

Yes.

> Python 3.1 fails with this traceback:
> 
> Traceback (most recent call last):
>   File "../bin/pip", line 9, in <module>
>     load_entry_point('pip==1.4.1', 'console_scripts', 'pip')()
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pkg_resources.py",
> line 378, in load_entry_point
>     return get_distribution(dist).load_entry_point(group, name)
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pkg_resources.py",
> line 2566, in load_entry_point
>     return ep.load()
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pkg_resources.py",
> line 2260, in load
>     entry = __import__(self.module_name, globals(),globals(), ['__name__'])
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pip/__init__.py",
> line 9, in <module>
>     from pip.log import logger
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pip/log.py",
> line 7, in <module>
>     from pip import backwardcompat
>   File "/Users/skip/src/pylockfile/.tox/py31/lib/python3.1/site-packages/pip/backwardcompat/__init__.py",
> line 125, in <module>
>     from ssl_match_hostname import match_hostname, CertificateError
> ImportError: No module named ssl_match_hostname

Sounds like a bug in pip.  https://pypi.python.org/pypi/pip still claims
Python 3.1 compatibility.

(I wouldn't be surprised if pip upstream decides that the proper fix is
to explicitly drop Python 3.1 compatibility.  I don't think anybody ever
actually used 3.1.)

> Python 3.4 fails with this output:

(I don't know anything about 3.4.)

Marius Gedminas
-- 
I actually have a user on my system named %x%x%n%n just so I can catch format
string issues in Gnome more easily.  :)
        -- Kees Cook
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://lists.idyll.org/pipermail/testing-in-python/attachments/20130826/bd2a825a/attachment.pgp>


More information about the testing-in-python mailing list