将 python virtualenv 克隆到离线服务器

Abd*_*ami 5 python virtualenv

您好,我想将 python virtualenv 克隆到未连接到互联网的服务器,我搜索了不同的论坛,但没有找到明确的答案。以下是我发现的方法以及每种方法遇到的问题:

方法1:(最安全但最耗时)

通过保存所有库,pip freeze > requierments.txt然后手动下载每个库并将它们存储在一个目录中。将此目录复制到离线服务器,然后在离线服务器中创建一个新的 virtualenv,并安装下载的文件中的所有要求。为了避免手动下载我pip download -r requirements.txt -d wheelfiles在源计算机中使用的每个软件包,但我找不到一种在一个命令中安装所有软件包的方法。但我可以使用带有循环的脚本来遍历每个脚本。问题是,即使源服务器也没有互联网连接来下载这些包。

方法2:(不太推荐,但我不明白为什么)

就是简单地将 virtualenv 目录及其所有文件复制到离线计算机,两台计算机应该具有明显相同的 Python 版本,并且您必须手动修改一些硬编码路径,例如修改包含sourceserver\user1\dev\virtualenvwithtargetserver\user4\dev\virtualenv 通常要修改 start 的所有文件使用 activate* 或 pip*。但据说不推荐这种方法,但我不明白为什么。

另外,如果此方法工作正常,我可以将 virtualenv 文件夹从 Linux 服务器复制到 Windows 服务器,反之亦然吗?

Kem*_*emp 11

您可以使用安装所有要求

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

这意味着选项是:

  1. pip freeze > requirements.txt
  2. pip download -r requirements.txt -d wheelfiles
  3. pip install -r requirements.txt --no-index --find-links path/to/wheels

或者

  1. 确保目标机器具有相同的架构、操作系统和Python版本
  2. 复制虚拟环境
  3. 修改文件中的各种硬编码路径

应该清楚为什么前者是首选,特别是它完全独立于Python版本、机器架构、操作系统等。

此外,前者意味着requirements.txt可以致力于源代码控制,以便在任何计算机上按需重新创建环境,包括由其他人以及当原始计算机或虚拟环境副本不可用时。就大小而言,该requirements.txt文件也比整个虚拟环境小得多。

  • 哦,抱歉,我刚刚意识到你指出了哪个问题。一般来说,您应该能够使用“--platform”选项来指定要下载的平台,尽管对于无法使用轮子的软件包有一些警告,如[此处](https://stackoverflow.com)所述/questions/46287077/pip-下载依赖项到特定平台,包括非二进制文件)。 (2认同)