I use puppet and the pip provider to install python modules. Unfortunately, the pip provider requires access to pypi.python.org and its XMLRPC server. Most of the pypi mirrors I have looked into (bandersnatch and pep381) only mirror the directory structure of pypi (unless I missed something). Meaning that there is still a dependency of being able to access pypi.python.org to use their API to search and get version numbers.
From /usr/lib/ruby/vendor_ruby/puppet/provider/package/pip.rb:
# Ask the PyPI API for the latest version number. There is no local # cache of PyPI's package list so this operation will always have to # ask the web service. def latest client = XMLRPC::Client.new2("http://pypi.python.org/pypi") client.http_header_extra = {"Content-Type" => "text/xml"} client.timeout = 10 result = client.call("package_releases", @resource[:name]) result.first rescue Timeout::Error => detail raise Puppet::Error, "Timeout while contacting pypi.python.org: #{detail}", detail.backtrace end
The goal is to be able to host my own pypi mirror that also has the ability to answer this XMLRPC client request. The over all goal is to be able to install and maintain versions of specific python modules without access to pypi.python.org / the internet.
Hopefully my requirements are clear... let me know if they are not.
EDIT: After researching for part of the day today... everything I come across is abandoned. Take a look at this page: https://wiki.python.org/moin/PyPiImplementations
My only hope may be the pypiserver... though it just looks like a webserver. :(
[link][2 comments]