创建本地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第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格