【问题标题】:Port Python virtualenv to another system将 Python virtualenv 移植到另一个系统
【发布时间】:2017-10-18 10:44:24
【问题描述】:

我在计算机上的日常工作中使用了许多 python 包,例如 numpy、bottleneck、h5py 等。由于我是这台机器上的 root 用户,因此安装这些软件包没有问题。但是,我也想在我只有一个普通用户帐户的服务器机器上使用我的不同包的“环境”。所以我想通过在我的机器上安装所有需要的包来在我的机器上创建一个虚拟环境(使用 virtualenv)。然后我只需将整个文件夹复制到服务器并可以从中运行所有内容吗?

我的机器使用 Fedora 19,而服务器使用 Ubuntu。这是一个问题吗?我找不到任何关于如何将这样的虚拟环境移动到另一个系统的信息。我想先在我的机器上创建虚拟环境的原因是服务器上缺少很多像python-dev这样的工具,所以我无法编译numpy。

我查看了 Anaconda 和 Enthought Python 发行版,但它们不包含我需要的几个包。另外,这个问题应该有一个完全“开放”的方式吗?

将虚拟环境移动到服务器失败,因为它在我导入包时抱怨一些丢失的文件。这可能并不奇怪......

【问题讨论】:

  • 那里的答案可能对您不太有用,因为您无法在目标机器上编译 numpy,但moving a virtualenv is virtually impossible
  • 嗯,感谢您提供这个信息丰富的链接。我想这确实是不可能的。
  • 如果缺少 python 开发头文件并且您无法在系统范围内安装它们(服务器管理员?),您可以做的是编译自己的 python(这不是 那个 i> hard),然后编译 numpy 等。 Virualenv 允许您指定要使用的 python 二进制文件。

标签: python numpy virtualenv


【解决方案1】:

你不应该移动你的 virtualenv,因为它本质上是链接到你的系统 python 并且二进制文件不能在其他机器上运行。

但是...您可以导出已安装软件包的列表并通过requirements.txt 文件将它们安装在另一个虚拟环境中。

基本上,我的大部分项目通常会做什么:

# Generate a requirements file:
pip freeze > requirements.txt

在新机器上:

# This uses virtualenvwrapper, but you can do it without as well
mkproject my_project_name
git clone git://..../ .
pip install -r requirements.txt

【讨论】:

  • 想知道我是否将 python 与 Virtual Env 一起打包,是否可以在 Windows 中移植?
  • 可能是这样,但有更好的 Windows 解决方案可以保证工作。 stackoverflow.com/q/12059509/54017
【解决方案2】:

在为 Python36 手动编译了 VTK 和 PySide2 之后,我还发现自己违反了 virtualenv 规则。

就在今天,我将我的 virtualenv 转移到了另一个系统,为了让事情变得更容易,我给它提供了与之前系统完全相同的路径。 但是,我在新系统上没有相同的 Python 路径。幸运的是,我能够通过更改位于 [VIRTUALENV]/Lib 中的“orig-prefix.txt”文件来更改 virtualenv 正在寻找的位置。

virtualenv 所需的基本 Python 路径存储在: [VIRTUALENV]/Lib/orig-prefix.txt

如果我没记错的话,virtualenv 本身的路径嵌入在多个文件中。因此,在我需要将 virtualenv 重新定位到不同路径的情况下,我只是重新创建它并复制了除 [VIRTUALENV]/Scripts 目录之外的所有内容。

这可能不是 virtualenv 的使用方式,但它确实提供了一种解决方法。另外请注意,我是在 Windows 环境中执行此操作的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2011-11-02
    • 2012-03-10
    相关资源
    最近更新 更多