创建本地pypi存储库以脱机使用pip

minirepo的Python项目详细描述


创建一个本地pypi存储库以离线使用pip。

minirepo是一个从pypi.python.org下载python包的命令行程序,因此您可以在没有internet的情况下使用pip。我需要在一个独立的集群环境中维护一个python存储库,在尝试了几种镜像pypi索引的工具之后,我决定自己制作一个工具。

一些镜像工具,比如我们bandersnatch不符合我的要求,因为我想做一个选择性的镜像,例如,只下载Python2.7的所有源代码。bandersnatch得到了完整的内容,在我第一个版本minirepo的时候大约是140gb。

然后我受到了basket的启发,这几乎是我想要的,但是您需要指定要下载的包的列表。最后,我使用json api来获取所需的包,然后调用basket来下载或更新包。最后,这种方法是缓慢和错误的,所以我写了这个小程序来做我所需要的。现在,我的minirepo文件夹只有12gb的最新包,镜像大约需要20分钟。

Installation

Use pip

最简单的安装方法是使用pip:

$ pip install minirepo

Or download and install

https://pypi.python.org/pypi/minirepo下载包文件,或从https://github.com/sganis/minirepo下载最新开发版本,然后:

$ tar xvzf minirepo-1.0.3.tar.gz
$ cd minirepo-1.0.3
$ python setup.py install

您也可以使用git:

$ git clone https://github.com/sganis/minirepo.git
$ cd minirepo
$ python setup.py install

Usage

# run it from the command line:
$ minirepo

# or run the python script if you didn't install it:
$ ./minirepo.py

第一次执行时,程序会询问您本地存储库路径,在Linux中默认为~/minirepo。一个json配置文件被创建并保存为~/.minirepo,您可以根据自己的偏好进行编辑。此配置文件如下:

{"processes":20,"repository":"/home/user/minirepo""package_types":["bdist_egg","bdist_wheel","sdist"],"extensions":["bz2","egg","gz","tgz","whl","zip"],"python_versions":["2.7","any","cp27","py2","py27","source"],}

minirepo使用包类型、扩展和python版本作为过滤器。我在分析pypi.python.org中可用的完整包列表,看起来所有选项都类似于下面的列表,您可以尝试任何其他选项。对我来说,我只对Python2.7包、源代码、Wheels和EEGS发行版以及一些扩展感兴趣。

PYTHON_VERSIONS=['2','2.2','2.3','2.4','2.5','2.6','2.7','2.7.6','3.0','3.1','3.2','3.3','3.4','3.5','any','cp25','cp26','cp27','cp31','cp32','cp33','cp34','cp35','py2','py2.py3','py26','py27','py3','py32, py33, py34','py33','py34','python','source']PACKAGE_TYPES=['bdist_dmg','bdist_dumb','bdist_egg','bdist_msi','bdist_rpm','bdist_wheel','bdist_wininst','sdist']EXTENSIONS=['bz2','deb','dmg','egg','exe','gz','msi','rpm','tgz','whl','zip']

Use pip without internet

$ pip install --no-index --find-links=/home/user/minirepo <package-name>

我更喜欢在配置文件中设置环境变量,这样就不必提供额外的命令行参数。

# save these 2 variable in your profile
$ exportPIP_NO_INDEX=true
$ exportPIP_FIND_LINKS=/home/user/minirepo

# then run pip as usual
$ pip install <package-name>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java传递实现接口的内部类   java为什么managedbean方法在post请求中的过滤器调用之前调用   java Android应用程序在Android M,O上崩溃,登录A/libc时出错:tid 17938中的致命信号11(SIGSEGV),代码2,故障地址0x343a2944   java JPA存储库。findByAll()返回null,但数据库中存在所有内容   用于发送电子邮件的java Ant脚本   Java小程序HTML页面发生了奇怪的事情   在Postman的请求正文中传递多个JSON数据,并使用Jersy(JXRS)进入Java Rest API   无法强制转换java DAO类   10分钟后重新连接java   正则表达式如何在java中选择字符串直到某个字符   java我的输出有一些问题   Objective中的java时间段   java如何在新屏幕上基于按钮单击在webview中打开url   java哪个selenium版本与Firefox ESR 45.2.0兼容   java无法使用Apache Camel 3.1.0将XML转换为JSON