I am using buildout to automatically download and setup the many dependencies of my Plone installation. buildout more or less uses easy_install to download and install a bunch of Python eggs. This usually works, but it doesn't work if any of the dependencies cannot be downloaded or if I want buildout to find an internal package not appropriate for pypi. How can I set up my own local version of pypi to automatically mirror the packages I need? Will it still depend on third-party servers for packages that use pypi for their metadata but not their code?
相关问题
- how to define constructor for Python's new Nam
- streaming md5sum of contents of a large remote tar
- How to get the background from multiple images by
- Evil ctypes hack in python
- Correctly parse PDF paragraphs with Python
You can also use a mirror. Put this in the "[global]" section of "~/.pip/pip.conf":
This is a recent feature as announced here.
PyPI has had mirroring since mid 2010 http://pypi.python.org/mirrors
This page shows how to use the alternate mirror mentioned in @moraes post, but for easy_install, buildout and virtualenv as well as pip:
http://jacobian.org/writing/when-pypi-goes-down/
Configure
index
inbuildout.cfg
, e.g.More mirrors on : http://www.pypi-mirrors.org/
Here are instructions on how to setup your own PyPi mirror. The homepage of this project is here. There also seems to be a growing number of mirrors out there.
For instructions on how to setup your own package index, check out this blog post where one solution is explained at the end. Then you can also host your own internal packages in there. The advantage is also that the versions are fixed that way. (For a way to pin the versions directly in buildout, check out this post).
If there is only metadata on PyPI and the archive is stored somewhere else you might of course copy that over to your index as well. If you just use a PyPI mirror I assume that you still need access to these servers.
For the packages, that you need to install in your
virtualenv
usually through arequirements.txt
(or may be individually), you have to override yourpip.conf
file, usually located at~/.pip/pip.conf
In your
pip.conf
file:Here you can provide the url of your own custom version of pypi if needed.
If you wish to also use another pypi server while creating
virtualenv
througheasy_install
you need to overridepydistutils.cfg
file usually located at~/pydistutils.cfg
In
pydistutils.cfg
file:This would ensure to create your
venv
with the url of pypi mentioned inpydistutils.cfg
. Here, we're tellingeasy_install
to use https://pypi.python.org/simple/ for creatingvenvs
.