Python 如何仅从virtualenv安装?

Python 如何仅从virtualenv安装?,python,virtualenv,pip,requirements.txt,Python,Virtualenv,Pip,Requirements.txt,我对virtualenv感到困惑。我一直在阅读文档并尝试示例,但情况并没有好转 我用以下方式创建了一个virtualenv: $ virtualenv myapp_venv --no-site-package 我使用了--无站点包,因为我想知道我的requirements.txt足以构建和运行我的代码。我不想依赖于我的开发机器上可能安装的任何东西 然后我尝试将依赖项安装到我的virtualenv: $ source myapp_venv/bin/activate (myapp_venv) $

我对
virtualenv
感到困惑。我一直在阅读文档并尝试示例,但情况并没有好转

我用以下方式创建了一个
virtualenv

$ virtualenv myapp_venv --no-site-package
我使用了
--无站点包
,因为我想知道我的
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
(myapp\u venv)$python run.py
回溯(最近一次呼叫最后一次):
文件“run.py”,第1行,在
从应用程序导入应用程序
文件“/home/eric/code/python/tournament/app/_init__.py”,第1行,在
从烧瓶进口烧瓶
ImportError:没有名为flask的模块
但是如果我停用了
virtualenv
,应用程序运行得很好

如何使用git
pip
将软件包安装到
virtualenv


就上下文而言,我对Java/Maven有着丰富的专业经验。我有一点Python语言的经验,但是Python生态系统对我来说还是新的。

跳过sudo,你会没事的。
Sudo告诉您要全局安装。

库中选中
无全局站点包.txt

如果
没有全局站点包.txt
文件在
lib
文件夹中,那么它将从您的
virtualenv
中获取所有包,否则它将全局获取


此外,正如维萨姆所说,不要使用
sudo
。这是正确的。因为使用
sudo
,它将在全球范围内安装。

哇,我从来都不知道
sudo
会有这种效果。非常令人惊讶。当你使用sudo时,你扮演的是root。当您充当根用户时,pip将在全局级别安装。由于flask已经在您的系统中全局安装,它将为您提供已经满足的需求。但是,当您在没有站点包的情况下本地运行virtualenv时,它将找不到它,因为该选项将virtualenv与全局模块隔离。干杯:)