关于linux:来自requirements.txt的Python包的磁盘缓存

Disk cache of Python packages from requirements.txt

所有长期使用开源软件的人都知道比特率是相当高。对于Python包来说,这当然是正确的,因为它们似乎以令人不安的频率更改了API。

您可以构建一个piprequirements.txt文件来记录所有依赖项,但有时您找不到6个月后需要的包版本。

假设我创建了一个这样的requirements.txt文件…

1
2
3
4
5
6
7
8
9
10
decorator==3.4.0
flup>=1.0.2
Werkzeug==0.9.4
argparse==1.2.1
Mako==0.9.0
Jinja2==2.7.1
Flask==0.10.1
itsdangerous==0.23
WTForms==1.0.5
Flask_WTF==0.9.3

我想避免在查找特定的包版本时出现问题。

有没有一种简单的方法可以将所有必需的包打包到磁盘归档文件中,而无需从Pypi单独下载它们?


您可以在~/.pip.conf中使用download-cache选项,这将存储您安装的软件包(它们下载的存档),以后您可以从中安装:

1
2
3
4
5
6
7
8
9
[global]
default-timeout = 60
respect-virtualenv = true
download-cache = /home/foo/bar/.pip/cache
log-file = /home/foo/bar/.pip/pip.log
build = /home/foo/bar/.pip/build

[install]
use-mirrors = true

您还可以创建自己的PYPI服务器,然后维护自己的包版本。

在工作中,我更喜欢这个选项,因为它允许我使用标准的python distutils来分发和安装我不想放在全球奶酪店的包。


这对我有用…使用pip版本1.4.1

1
2
cd <package directory>
cat requirements.txt | xargs -I{} pip install {} --download ./ --no-install

之后,使用pip从同一个磁盘归档文件安装包就变得很简单了。