2016-06-21 89 views
0

我創建了幾個月的virtualenv。我遇到了一個問題。python virtualenv激活和bin/python的不同行爲

當我啓動虛擬環境中我有機會獲得LIB像Django的:

source virtualenv/jsms/bin/activate 
(jsms)local% python 
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
>>> exit() 
(jsms)local% deactivate 

但是,當我使用Python從文件夾我無法訪問Django的:

local% virtualenv/jsms/bin/python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named django 

更奇怪的是,當我使用python3.4 from bin文件夾時,我使用的是python 2.7

local% virtualenv/jsms/bin/python3.4 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 

你知道的方式直接從蟒蛇訪問的lib在文件夾?

+0

爲什麼你會希望能?你需要「激活」虛擬環境的原因是因爲它不像指向正確的解釋器那麼簡單。你究竟在努力實現什麼? – jonrsharpe

+0

我想從另一個python腳本運行django dev服務器。我嘗試使用** os.popen('〜/ virtualenv/jsms/bin/python〜/ project/manage.py runserver 127.0.0.1:8000')**,但它不起作用。我不能使用** os.popen('〜/ virtualenv/jsms/bin/activate')** 然後** os.popen('〜/ project/manage.py runserver 127.0.0.1:8000')* * – jedema

+0

爲什麼其他腳本不能在相同的環境中運行? – jonrsharpe

回答

2

activate只是一個bash腳本,所以你總是可以看看激活文件,看看它在做什麼,但我認爲你要找的是env變量PYTHONHOME。我會嘗試:

export OLD_PYTHON_HOME="$PYTHONHOME" 
unset PYTHONHOME 
virtualenv/jsms/bin/python3.4 --version 

for Windows,您可以使用下面的代碼從activate.bat模板:

if defined PYTHONHOME (
    set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME% 
    set PYTHONHOME= 
) 
+0

感謝您的回答,但我需要一個適用於Mac OS和Windows的解決方案。 – jedema

+0

我在你的原始文章中看到了關於windows的零,並且Windows操作系統的命令行和命令行與Mac OS完全不同,除非你使用的是Windows 10的內置ubuntu。 – 2ps