[Distutils] Odd problem with distribute 0.6.26 and 2to3
Vinay Sajip
vinay_sajip at yahoo.co.uk
Fri May 18 17:24:59 CEST 2012
I'm having an odd problem with distribute and 2to3 when working with the venv
branch of Python 3.3 (PEP 405 - http://bugs.python.org/issue14712), and I'm
hoping one of the Fellowship of the Packaging can help.
The problem: I created a venv with no Distribute installed. Then I downloaded
and extracted distribute-0.6.26.tar.gz in a scratch folder, and ran setup.py
install using the venv's python. This gave errors because some of the setuptools
sources still have 2.x syntax, despite having been processed by 2to3.
To investigate further, I added logging to distutils refactoring code to print
what was being refactored. I won't list the entire log output [1], but when
looking at just one file which caused a SyntaxError -
setuptools/tests/test_packageindex.py - I see the following output from the
"setup.py install" operation:
creating build
creating build/src
...
copying setuptools/tests/test_packageindex.py -> build/src/setuptools/tests
...
copying launcher.c -> build/src
Skipping implicit fixer: buffer
Skipping implicit fixer: idioms
Skipping implicit fixer: set_literal
Skipping implicit fixer: ws_comma
refactored build/src/setuptools/script template (dev).py
...
refactored build/src/setuptools/tests/test_packageindex.py
...
refactored build/src/release.py
Before install bootstrap.
Scanning installed packages
No setuptools distribution found
running install
running build
running build_py
creating build/lib
...
copying setuptools/tests/test_packageindex.py -> build/lib/setuptools/tests
...
creating /tmp/venv/lib/python3.3/site-packages/setuptools/tests
copying build/lib/setuptools/tests/test_packageindex.py ->
/tmp/venv/lib/python3.3/site-packages/setuptools/tests
...
running install_lib
...
creating /tmp/venv/lib/python3.3/site-packages/setuptools
creating /tmp/venv/lib/python3.3/site-packages/setuptools/tests
copying build/lib/setuptools/tests/test_packageindex.py ->
/tmp/venv/lib/python3.3/site-packages/setuptools/tests
...
byte-compiling /tmp/venv/lib/python3.3/site-
packages/setuptools/tests/test_packageindex.py to test_packageindex.cpython-
33.pyc
...
running install_egg_info
Writing /tmp/venv/lib/python3.3/site-packages/distribute-0.6.26-py3.3.egg-info
setup.py:139: ResourceWarning: unclosed file <_io.TextIOWrapper
name='README.txt' mode='r' encoding='UTF-8'>
long_description = open('README.txt').read() + open('CHANGES.txt').read(),
setup.py:139: ResourceWarning: unclosed file <_io.TextIOWrapper
name='CHANGES.txt' mode='r' encoding='UTF-8'>
long_description = open('README.txt').read() + open('CHANGES.txt').read(),
/home/vinay/projects/python/sandbox/Lib/distutils/dist.py:257: UserWarning:
Unknown distribution option: 'test_suite'
warnings.warn(msg)
/home/vinay/projects/python/sandbox/Lib/distutils/dist.py:257: UserWarning:
Unknown distribution option: 'entry_points'
warnings.warn(msg)
/home/vinay/projects/python/sandbox/Lib/distutils/dist.py:257: UserWarning:
Unknown distribution option: 'zip_safe'
warnings.warn(msg)
File "/tmp/venv/lib/python3.3/site-
packages/setuptools/tests/test_packageindex.py", line 17
except Exception, v:
^
SyntaxError: invalid syntax
Now the first part seems straightfoward: files are copied to build/src and then
2to3 is run over them. But then, following the "No setuptools distribution
found", files are copied to build/lib not from the 2to3-processed output at
build/src, but rather the actual 2.x sources shipped with distribute. That looks
wrong; at the point where setup is called, src_root is correctly set to
build/src, and moreover, that's the first entry on sys.path. I'm not sure why
there's no error immediately following the "byte-compiling ..." line when
running install_lib, but the error seems to occur a little later, when running
install_egg_info ...
Can anyone shed any light on what's happening here?
Regards,
Vinay Sajip
[1] https://gist.github.com/2725747
More information about the Distutils-SIG
mailing list