5

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

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

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

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

4

2 回答 2

10

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

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

基本上,我通常对我的大多数项目做什么:

# 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
于 2013-07-11T12:15:07.200 回答
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 环境中执行此操作的。

于 2017-10-18T02:44:24.757 回答