我有两个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
文件中保留哪些依赖关系或多或少是复杂的。您可以使用以下工具:deptree、pipdeptree、creosote、pipreqs或pigar。
然后构建实际的wheelhouse,如果您担心在源环境中进行修改,您可能希望在一个新的空虚拟环境中执行此操作:
python -m pip wheel --requirement requirements.txt --wheel-dir=wheelhouse/
wheelhouse
目录可以复制到目标机。
依赖项可以在没有网络连接的情况下使用pip安装在目标环境中:
python -m pip install --no-index wheelhouse/*.whl
如果目标机器确实没有pip(这似乎不大可能),您可以使用基于zipapp的解决方案,例如pex或shiv。