2013-12-10 45 views
0

我很困惑virtualenv。我一直在阅读文档和尝试的例子,但它并没有越来越好。如何仅从virtualenv进行安装?

我通过以下方法创建一个virtualenv

$ virtualenv myapp_venv --no-site-package 

我以前--no-site-packages,因为我想知道,我的requirements.txt是足够的建设和运行我的代码。我不想依赖可能安装在我的开发机上的任何东西。

然后我试图依赖安装到我的virtualenv

$ source myapp_venv/bin/activate 
(myapp_venv) $ sudo pip install -r requirements.txt 

在这一点上我得到这样一些信息:

Requirement already satisfied (use --upgrade to upgrade): Flask==0.10.1 in /usr/local/lib/python2.7/dist-packages (from -r requirements.txt (line 1)) 

这让我吃惊,因为我以为virtualenv不会关注全球可用的软件包,但要关注这个项目的环境。

当我开始试着运行应用程序:

(myapp_venv) $ python run.py 
Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from app import app 
    File "/home/eric/code/python/tournament/app/__init__.py", line 1, in <module> 
    from flask import Flask 
ImportError: No module named flask 

但如果我停用virtualenv,应用程序运行得很好。

我该如何将git pip安装到virtualenv

对于上下文,我有专业的Java/Maven经验。我有一些Python语言体验,但Python生态系统对我来说仍然是新手。

回答

2

跳过sudo,你会没事的。 Sudo正在全球安装。

+0

哇,我从来不知道'sudo'有这个效果。非常令人惊讶。 –

+0

当您使用sudo时,您将充当根用户。当你以root身份行事时,将会在全局级别安装。由于烧瓶已经在全球范围内安装了你的系统,它会给你满足的要求。但是当你使用no-site-packages在本地运行virtualenv时,它不会找到它,因为该选项会将virtualenv从全局模块中分离出来。Cheers :) –

0

检查no-global-site-packages.txt在您的lib

如果no-global-site-packages.txt文件在lib文件夹中,那么它将从您的virtualenv其他文件夹中取得所有包裹。

此外,正如wissam所说,不要使用sudo。它是正确的。因为使用sudo,它将全局安装。