如何将python包从一个环境迁移到另一个没有互联网连接并且安装了pip的环境



我有两个VM,一个是开发VM,一个是生产VM。开发虚拟机可以上网,但生产虚拟机不能上网,也不能上网。

我想安装一些python包来运行一些脚本。在开发VM中,我安装了这些包。脚本是运行文件。我想把这个包迁移到生产VM。没有安装pip的地方也没有internet

我正在寻找一种方法,我可以压缩包迁移到prod VM使用scp和安装在那里。

我不能直接压缩python2.7/site-packages,因为在开发VM中有许多不必要的包。我只想要那些脚本运行所需的所有依赖项。

我试着从https://pypi.org/下载源代码tar.gz,然后通过"setup.py install"安装它。但是它需要太多的依赖问题。

我正在寻找解决方案,就像我创建目录所有的包将被安装在所有依赖关系的目录。我可以把它压缩并放到其他设置中。

也是一种不升级任何预先安装的包的方法。

建驾驶室在有互联网连接的机器上。如下所示,查看pip的文档以获取确切的命令和详细信息。

首先,在您想要镜像的环境中,获取依赖项列表:

python -m pip freeze > requirements.txt

也许,编辑requirements.txt文件以删除您不想要或不需要的依赖项。弄清楚应该在requirements.txt文件中保留哪些依赖关系或多或少是复杂的。您可以使用以下工具:deptreepipdeptreecreosotepipreqspigar

然后构建实际的wheelhouse,如果您担心在源环境中进行修改,您可能希望在一个新的空虚拟环境中执行此操作:

python -m pip wheel --requirement requirements.txt --wheel-dir=wheelhouse/

wheelhouse目录可以复制到目标机。

依赖项可以在没有网络连接的情况下使用pip安装在目标环境中:

python -m pip install --no-index wheelhouse/*.whl

如果目标机器确实没有pip(这似乎不大可能),您可以使用基于zipapp的解决方案,例如pexshiv

相关内容