2016-06-21 30 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