8

我想在 Virtualenv 环境中安装 python-numpy。我的系统是 Ubuntu 12.04,我的 python 是 2.7.5。首先我安装了 Virtualenv

$ sudo apt-get install python-virtualenv

然后通过以下方式设置环境

$ mkdir myproject
$ cd myproject
$ virtualenv venv
New python executable in venv/bin/python
Installing distribute............done.

通过激活它

$ . venv/bin/activate

通过在环境中安装 python-numpy

$ sudo apt-get install python-numpy

但是,经过上述所有步骤后,我尝试在环境中的 python 中导入 numpy。Python 告诉我“没有名为 numpy 的模块”。而 numpy 可以在 Python 中全局导入。我尝试删除和安装很多次,但它不起作用。我是 Python 和 Linux 的初学者。

4

2 回答 2

6

apt-get即使您在新的virtualenv.

您应该pip install numpy在您的虚拟环境中使用(最简单的方式),或者使用源目录根目录中numpy的文件从源代码编译和安装(稍微困难的方式,请参见此处)。setup.py

我还强烈建议您看一下virtualenvwrapper,这使得管理虚拟环境更加友好。

编辑:

应该使用sudo来创建您的虚拟环境或在其中安装东西 - 它是您的主文件夹中的一个目录,您不需要提升权限来对其进行更改。如果您使用sudo,pip将对您的全局站点包进行更改,而不是对您的虚拟环境进行更改,因此您无法在numpy本地安装。

另一件要考虑的事情是,默认情况下, newvirtualenvs将从全局继承site-packages——即,如果 Python 在您的本地找不到模块virtualenv,Python 也会在您的全局站点包中查找 *。在您的情况下,由于您已经numpy全局安装(使用apt-get),当您尝试pip install numpy在虚拟环境中时,会pip看到它numpy已经在您的 Python 路径中并且不会在本地安装它。

你可以:

  1. --no-site-packages创建virtualenv. 这可以防止新virtualenv的从全局站点包继承,因此必须在本地安装所有内容。

  2. 强制在本地pip安装/升级,例如使用numpypip install -U --force numpy


* 从 v1.7 开始,默认行为virtualenv是不包含全局site-packages目录。--system-site-packages您可以通过在创建新的虚拟环境时传递标志来覆盖它。

于 2013-08-13T08:37:48.823 回答
1

为站点包干预 PYTHONPATH 确实违背了 virtalenv 的目的。对我有用的是指定我希望通过 pip 安装软件包的环境

例子:

pip -E /home/proj1 

whereproj1是使用 virtualenv 创建的。

参考:如何在 virtualenv 中安装 numpy

于 2013-11-09T10:18:04.500 回答