创建独立 pip 包的最佳方法是什么,它可以在任何安装了裸包的机器上运行?
说,我要打包pelican这样它将在所有安装了 python 的计算机上运行(暂时假设所有依赖项都是纯 python)。
最佳答案
我心里有两个方案:bundles和 pip install --no-install
技巧。
使用包
:
$ 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
只包含 pelican 需要的东西)
而你只需要分发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 查找任何东西,而且在那一步您甚至不需要互联网连接。
关于python - 如何创建独立的 pip 包(包括所有部门),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13698374/