如何创建一个独立的pip包(包括所有deps)

时间:2012-12-04 07:57:33

标签: python pip

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

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

2 个答案:

答案 0 :(得分:6)

我认为有两种解决方案:bundlespip 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-install使用--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找到任何东西,你甚至不需要在这一步中连接互联网。

答案 1 :(得分:0)

就像一张纸条: PIP版本7 +已经替换(至少是我测试此命令的版本)

--no-install

选项

--download or -d

因此,如上例所示,只需下载pelican所需的所有软件包,即可运行:

pip install -d tarballs pelican