0

我很困惑virtualenv。我一直在阅读文档并尝试示例,但它并没有变得更好。

virtualenv通过以下方式创建了一个:

$ virtualenv myapp_venv --no-site-package

我使用它--no-site-packages是因为我想知道 myrequirements.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,应用程序运行得很好。

我如何 gitpip将软件包安装到virtualenv?

对于上下文,我在 Java/Maven 方面具有专业经验。我有一点 Python 语言经验,但 Python 生态系统对我来说还是个新手。

4

2 回答 2

2

跳过 sudo,你会没事的。须藤告诉全球安装。

于 2013-12-10T03:25:11.877 回答
0

no-global-site-packages.txt入您的lib.

如果no-global-site-packages.txt文件在lib文件夹中,那么它将从您的virtualenvelse 中获取所有包它将全局获取。

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

于 2013-12-10T03:36:07.163 回答