2013-12-10 43 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,它將全局安裝。