[Distutils] easy_install command arguments not propagated when installing source distributions

Jason R. Coombs jaraco at jaraco.com
Thu Sep 23 21:23:25 CEST 2010

We're using easy_install 0.6c9 or greater. Our systems are behind a firewall
with a custom cheeseshop. All required packages are available on the
cheeseshop. However, we seem to be unable to install source distributions,
because the dependencies specified in setup_requires aren't resolved with
the parameters (allow-hosts and find-links) passed to easy_install. Here's a
transcript of what happens (with #comments).

(sandbox)jason.coombs at host:~/sandbox$ easy_install -mZ -H
cheeseshop.company.com -f http://cheeseshop.company.com jaraco.compat
Searching for jaraco.compat
Reading http://cheeseshop.company.com
Best match: jaraco.compat 0.1
Downloading http://cheeseshop.company.com/jaraco.compat-0.1.tar.gz
Processing jaraco.compat-0.1.tar.gz
# it found the source distribution, and now runs setup.py from it
Running jaraco.compat-0.1/setup.py -q bdist_egg --dist-dir
# the source distribution specifies setup_requires="hgtools>=0.4"
Searching for hgtools>=0.4
Reading http://pypi.python.org/simple/hgtools/
# it stalls here for a long time trying to reach a host which is not
accessible due to the firewall
Download error: (110, 'Connection timed out') -- Some packages may not be
Couldn't find index page for 'hgtools' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
# same thing - stalls a long time
Download error: (110, 'Connection timed out') -- Some packages may not be
No local packages or download links found for hgtools>=0.4
Best match: None
Traceback (most recent call last):
# details omitted
AttributeError: 'NoneType' object has no attribute 'clone' # I think this is
the error for "not found" when mercurial is present

I understand the challenge here - setuptools is launching setup.py from the
source distribution for jaraco.compat, and setup.py doesn't accept
parameters for 'allow_hosts' and 'find_links'.

Is there any way that we can use source distributions in this environment
(without customizing each source distribution for the environment)? If not,
perhaps an improvement could be added to setuptools to populate a setup.cfg
file when installing source distributions to include the easy_install flags
supplied to the requiring install.

In other words, the command "easy_install -f http://foo.org -H foo.org
source.package" would

1) Download the source package.
2) Expand it to a temporary directory.
3) Create or customize the setup.cfg for that package (or use --command and
--option) to include dependency_links=['http://foo.org'] and an equivalent
parameter with the same effect as allow_hosts.
4) Run setup.py as above.

I'm not sure all of this is possible or even desirable. I appreciate any
suggestions you may have on this scenario.

I wouldn't be surprised too if someone's already encountered this, but I was
unable to find any resources on it. If that's the case, please accept my
apologies for repeating the question and direct me to the resource or search
terms that will help me locate it.

Much obliged,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6448 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20100923/00a056ee/attachment.bin>

More information about the Distutils-SIG mailing list