将 python virtualenv 克隆到离线服务器
Clone a python virtualenv to an offline server
你好我想克隆一个 python virtualenv 到一个没有连接到互联网的服务器,我搜索了不同的论坛但没有找到明确的答案。以下是我找到的方法以及每种方法遇到的问题:
方法一:(最安全但最耗时)
通过 pip freeze > requierments.txt
保存所有库,然后手动下载每个库并将它们存储在一个目录中。将此目录复制到离线服务器,然后在离线服务器中创建一个新的 virtualenv,并从下载的文件中安装所有要求。
为了避免手动下载每个包,我在源机器上使用了 pip download -r requirements.txt -d wheelfiles
,但我找不到在一个命令中安装所有包的方法。但我可以使用带有循环的脚本来遍历每个脚本。问题是即使源服务器也没有互联网连接来下载这些包。
方法二:(不太推荐但是没看懂为什么)
就是将virtualenv目录及其所有文件简单地复制到离线机器上,两台机器应该具有明显相同的Python版本,并且您必须手动修改一些硬编码路径,例如修改所有包含 sourceserver\user1\dev\virtualenv
和 targetserver\user4\dev\virtualenv
的文件通常要修改的文件以 activate* 或 pip* 开头。
但是这个方法据说不推荐但是我不明白为什么。
此外,如果此方法没有问题,我可以将 virtualenv 文件夹从 linux 服务器复制到 windows 服务器,反之亦然吗?
您可以使用
安装所有要求
pip install -r requirements.txt
这意味着选项是:
pip freeze > requirements.txt
pip download -r requirements.txt -d wheelfiles
pip install -r requirements.txt --no-index --find-links path/to/wheels
或
- 确保目标机器是相同的架构,OS,和Python版本
- 复制虚拟环境
- 修改文件中的各种硬编码路径
应该清楚为什么前者是首选,特别是因为它完全独立于 Python 版本、机器架构、OS 等
此外,前者意味着 requirements.txt
可以提交到源代码管理,以便在任何机器上按需重新创建环境,包括由其他人以及当原始机器或虚拟环境的副本时不可用。在大小方面,requirements.txt
文件也明显小于整个虚拟环境。
你好我想克隆一个 python virtualenv 到一个没有连接到互联网的服务器,我搜索了不同的论坛但没有找到明确的答案。以下是我找到的方法以及每种方法遇到的问题:
方法一:(最安全但最耗时)
通过 pip freeze > requierments.txt
保存所有库,然后手动下载每个库并将它们存储在一个目录中。将此目录复制到离线服务器,然后在离线服务器中创建一个新的 virtualenv,并从下载的文件中安装所有要求。
为了避免手动下载每个包,我在源机器上使用了 pip download -r requirements.txt -d wheelfiles
,但我找不到在一个命令中安装所有包的方法。但我可以使用带有循环的脚本来遍历每个脚本。问题是即使源服务器也没有互联网连接来下载这些包。
方法二:(不太推荐但是没看懂为什么)
就是将virtualenv目录及其所有文件简单地复制到离线机器上,两台机器应该具有明显相同的Python版本,并且您必须手动修改一些硬编码路径,例如修改所有包含 sourceserver\user1\dev\virtualenv
和 targetserver\user4\dev\virtualenv
的文件通常要修改的文件以 activate* 或 pip* 开头。
但是这个方法据说不推荐但是我不明白为什么。
此外,如果此方法没有问题,我可以将 virtualenv 文件夹从 linux 服务器复制到 windows 服务器,反之亦然吗?
您可以使用
安装所有要求pip install -r requirements.txt
这意味着选项是:
pip freeze > requirements.txt
pip download -r requirements.txt -d wheelfiles
pip install -r requirements.txt --no-index --find-links path/to/wheels
或
- 确保目标机器是相同的架构,OS,和Python版本
- 复制虚拟环境
- 修改文件中的各种硬编码路径
应该清楚为什么前者是首选,特别是因为它完全独立于 Python 版本、机器架构、OS 等
此外,前者意味着 requirements.txt
可以提交到源代码管理,以便在任何机器上按需重新创建环境,包括由其他人以及当原始机器或虚拟环境的副本时不可用。在大小方面,requirements.txt
文件也明显小于整个虚拟环境。