在 Virtualenv 环境中安装 python-numpy
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18204134/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Install python-numpy in the Virtualenv environment
提问by user2677756
I would like to install the python-numpy in the Virtualenv environment. My system is Ubuntu 12.04, and my python is 2.7.5. First I installed the Virtualenv by
我想在 Virtualenv 环境中安装 python-numpy。我的系统是 Ubuntu 12.04,我的 python 是 2.7.5。首先我安装了 Virtualenv
$ sudo apt-get install python-virtualenv
And then set up an environment by
然后通过设置环境
$ mkdir myproject
$ cd myproject
$ virtualenv venv
New python executable in venv/bin/python
Installing distribute............done.
Activated it by
激活它
$ . venv/bin/activate
Installed python-numpy in the environment by
通过在环境中安装 python-numpy
$ sudo apt-get install python-numpy
However, I tried to import numpy in python in the environment after all steps above. Python told me "No modules named numpy". Whereas, numpy could be imported in Python globally. I tried to remove and install many times but it does not work. I am a beginner of both Python and Linux.
但是,经过上述所有步骤后,我尝试在环境中的python中导入numpy。Python 告诉我“没有名为 numpy 的模块”。而 numpy 可以在 Python 中全局导入。我多次尝试删除和安装,但它不起作用。我是 Python 和 Linux 的初学者。
回答by ali_m
apt-get
will still install modules globally, even when you're in your new virtualenv
.
apt-get
即使您在新的virtualenv
.
You should either use pip install numpy
from within your virtual environment (easiest way), or else compile and install numpy
from source using the setup.py
file in the root of the source directory (slightly harder way, see here).
您应该pip install numpy
在虚拟环境中使用(最简单的方法),或者numpy
使用setup.py
源目录根目录中的文件从源编译和安装(稍微困难的方法,请参阅此处)。
I'd also thoroughly recommend you take a look at virtualenvwrapper
, which makes managing virtual environments much friendlier.
我还virtualenvwrapper
强烈建议您查看,它使管理虚拟环境更加友好。
Edit:
编辑:
You should notbe using sudo
, either to create your virtual environment or to install things within it - it's a directory in your home folder, you don't need elevated permissions to make changes to it. If you use sudo
, pip
will make changes to your global site packages, not to your virtual environment, hence why you weren't able to install numpy
locally.
您不应该使用sudo
, 来创建您的虚拟环境或在其中安装东西 - 它是您的主文件夹中的一个目录,您不需要提升权限来对其进行更改。如果您使用sudo
,pip
将更改您的全局站点包,而不是您的虚拟环境,因此您无法在numpy
本地安装。
Another thing to consider is that by default, new *. In your case, since you'd already installed virtualenvs
will inherit from the global site-packages
- i.e. if Python can't find a module locally within your virtualenv
, Python will also look in your global site packagesnumpy
globally (using apt-get
), when you then try to pip install numpy
in your virtual environment, pip
sees that numpy
is already in your Python path and doesn't install it locally.
另一件要考虑的事情是,默认情况下, new* 中virtualenvs
将从全局继承site-packages
- 即如果 Python 无法在您的本地找到模块virtualenv
,Python 也会在您的全局站点包查找。在您的情况下,由于您已经numpy
全局安装(使用apt-get
),当您尝试pip install numpy
在您的虚拟环境中安装时,会pip
看到它numpy
已经在您的 Python 路径中并且不会在本地安装它。
You could:
你可以:
Pass the
--no-site-packages
option when you create yourvirtualenv
. This prevents the newvirtualenv
from inheriting from the global site packages, so everything must be installed locally.Force
pip
to install/upgradenumpy
locally, e.g. usingpip install -U --force numpy
传
--no-site-packages
当你创建你的选项virtualenv
。这可以防止新的virtualenv
从全局站点包继承,所以所有的东西都必须在本地安装。强制
pip
在numpy
本地安装/升级,例如使用pip install -U --force numpy
*As of v1.7, the default behaviour of virtualenv
is to not include the global site-packages
directory. You can override this by passing the --system-site-packages
flag when creating a new virtual environment.
*从 v1.7 开始, 的默认行为virtualenv
是不包含全局site-packages
目录。您可以通过--system-site-packages
在创建新的虚拟环境时传递标志来覆盖它。
回答by samkhan13
meddling with PYTHONPATH for site-packages indeed defeats the purpose of virtalenv. what worked for me was to specify the env i wanted the packages to be installed in via pip
干预站点包的 PYTHONPATH 确实违背了 virtalenv 的目的。对我有用的是指定我希望通过 pip 安装包的环境
example:
例子:
pip -E /home/proj1
where proj1
was created using virtualenv.
whereproj1
是使用virtualenv创建的。
reference: how to install numpy in a virtualenv