我想在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的初学者。
答案 0 :(得分:5)
apt-get
仍会在全球范围内安装模块,即使您使用新的virtualenv
也是如此。
您应该在虚拟环境中使用pip install numpy
(最简单的方法),或者使用源目录根目录中的numpy
文件从源代码编译和安装setup.py
(更艰难的方式,see here)。
我还建议您查看virtualenvwrapper
,这样可以更加友好地管理虚拟环境。
你应该不使用sudo
创建虚拟环境或在其中安装内容 - 它是您的主文件夹中的目录,您不需要提升权限对它进行更改。如果您使用sudo
,pip
将更改您的全球网站套餐,而不是您的虚拟环境,因此您无法在本地安装numpy
。
另一件需要考虑的事情是默认情况下,新的 * 。在您的情况下,由于您已经全局安装了virtualenvs
将继承全局site-packages
- 即如果Python无法在virtualenv
内找到本地模块, Python还会查看您的全球网站包numpy
(使用apt-get
),当您在虚拟环境中尝试pip install numpy
时,pip
会看到{{1}已经在你的Python路径中,并没有在本地安装它。
你可以:
创建numpy
时,请传递--no-site-packages
选项。这可以防止新的virtualenv
继承自全局站点包,因此必须在本地安装所有内容。
强制virtualenv
在本地安装/升级pip
,例如使用numpy
* As of v1.7,pip install -U --force numpy
的默认行为是不包含全局virtualenv
目录。您可以通过在创建新虚拟环境时传递site-packages
标志来覆盖它。
答案 1 :(得分:1)
示例:
pip -E /home/proj1
使用virtualenv创建proj1
。