在Virtualenv环境中安装python-numpy

时间:2013-08-13 08:27:03

标签: python numpy ubuntu-12.04 virtualenv

我想在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

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

2 个答案:

答案 0 :(得分:5)

apt-get仍会在全球范围内安装模块,即使您使用新的virtualenv也是如此。

您应该在虚拟环境中使用pip install numpy(最简单的方法),或者使用源目录根目录中的numpy文件从源代码编译和安装setup.py(更艰难的方式,see here)。

我还建议您查看virtualenvwrapper,这样可以更加友好地管理虚拟环境。

编辑:

你应该使用sudo创建虚拟环境或在其中安装内容 - 它是您的主文件夹中的目录,您不需要提升权限对它进行更改。如果您使用sudopip将更改您的全球网站套餐,而不是您的虚拟环境,因此您无法在本地安装numpy

另一件需要考虑的事情是默认情况下,新的virtualenvs将继承全局site-packages - 即如果Python无法在virtualenv内找到本地模块, Python还会查看您的全球网站包 * 。在您的情况下,由于您已经全局安装了numpy(使用apt-get),当您在虚拟环境中尝试pip install numpy时,pip会看到{{1}已经在你的Python路径中,并没有在本地安装它。

你可以:

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

  2. 强制virtualenv在本地安装/升级pip,例如使用numpy


  3. * As of v1.7pip install -U --force numpy的默认行为是不包含全局virtualenv目录。您可以通过在创建新虚拟环境时传递site-packages标志来覆盖它。

答案 1 :(得分:1)

干扰PYTHONPATH的网站包确实击败了virtalenv的目的。对我有用的是指定env我希望通过pip

安装软件包

示例:

pip -E /home/proj1 

使用virtualenv创建proj1

参考:how to install numpy in a virtualenv