我很困惑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生態系統對我來說仍然是新手。
哇,我從來不知道'sudo'有這個效果。非常令人驚訝。 –
當您使用sudo時,您將充當根用戶。當你以root身份行事時,將會在全局級別安裝。由於燒瓶已經在全球範圍內安裝了你的系統,它會給你滿足的要求。但是當你使用no-site-packages在本地運行virtualenv時,它不會找到它,因爲該選項會將virtualenv從全局模塊中分離出來。Cheers :) –