> On Dec 29, 2016, at 7:20 PM, Tim Allen <screwt...@froup.com> wrote: > > On Thu, Dec 29, 2016 at 05:27:44AM -0800, Glyph Lefkowitz wrote: >> Increasingly, we are assuming a pip-like packaging toolchain for >> dealing with Twisted's dependencies, so getting familiar with this >> stuff - pip, requirements.txt, pinning, virtualenv - is worthwhile. >> (It'll make your life easier in more ways than one.) > > I wasn't going to mention it (because we found a workaround), but since > the topic has come up... > > My current employer has a fully pip-based packaging toolchain for all > our internal Python apps, where we build wheels for our apps and all > their dependencies, and then deploy them into a virtualenv in > production. For reproducability reasons, we have a PyPI mirror inside > the corporate firewall, and our wheel-building Docker image has > a `pip.conf` configured to point at it. > > Twisted 16.6 broke this system when it added a package named > "incremental" to the `setup_requires` list in setup.py. Because > `setup_requires` is a feature provided by setuptools, packages listed > there are installed by (the same machinery as) setuptools' `ez_install` > command, which does *not* respect `pip.conf`, and so it tried to > download the package from upstream PyPI and timed out banging its head > against the firewall. > > As a workaround, we messed with our build-scripts to manually "pip > install" incremental before installing Twisted, or anything that depends > on it, so everything's fine again. > > The Python Packaging Authority already has plans for replacing > `setup_requires` with something more Pip-friendly (see PEP 518), so over > time this won't be an issue. For the short term, though, I hope there > won't be too many more things added to `setup_requires` without > announcement. >
FTR, you can configure setup_requires too, it just uses a different format. In any of the files listed at https://docs.python.org/3.6/install/index.html#location-and-names-of-config-files <https://docs.python.org/3.6/install/index.html#location-and-names-of-config-files> You can drop a [easy_install] Index_url = https://private.example.com/simple/ allow_hosts = private.example.com # not strictly required, but will error instead of timeout for non private.example.com I’m not 100% sure on the exact syntax/structure, but something like that should work. — Donald Stufft
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python