3

创建一个独立的 pip 包的最佳方法是什么,它可以在任何安装了裸包的机器上运行?

说,我想打包pelican,以便它可以在所有安装了 python 的计算机上运行(假设所有依赖项都是纯 python)。

4

2 回答 2

7

我的想法有两种解决方案:捆绑pip install --no-install技巧。

使用bundles

$ virtualenv venv
$ venv/bin/pip install pelican
$ venv/bin/pip freeze > all-packages.txt
$ venv/bin/pip bundle allpackages.pybundle -r all-packages.txt

(我创造venv了一个干净的环境,all-packages.txt只包含鹈鹕需要的东西)

你只需要分发allpackages.pybundle,谁想要那些必须做的包:

$ venv/bin/pip install allpackages.pybundle -r all-packages.txt

使用pip install --no-install

pip 可以将所有包下载到一个目录,您可以分发这些包。假设你已经all-packages.txt包含了所有需要分发的包,你可以使用--no-installwith--download-dir选项:

$ mkdir tarballs
$ venv/bin/pip install --no-install --download-dir=tarballs -r all-packages.txt

如果您使用最后一个技巧并想使用 pip 安装这些软件包:

$ venv/bin/pip install --no-deps --no-index tarballs/*

该选项no-deps是必需的,因为 pip 在安装 wnated 包之前会查找依赖项。我曾经--no-index只是向您展示 pip 不需要去 PyPI 查找任何内容,并且您在该步骤中甚至不需要互联网连接。

于 2012-12-07T00:06:41.413 回答
0

请注意:PIP 版本 7 + 已替换(至少那是我测试此命令的版本)

--no-install

选项

--download or -d

因此,要按照上面示例中的说明下载 pelican 所需的所有软件包,您将运行:

pip install -d tarballs pelican
于 2015-11-16T16:30:38.327 回答