Python virtualenv中返回了错误的Django版本

Python virtualenv中返回了错误的Django版本,python,django,virtualenv,Python,Django,Virtualenv,我在一台运行OSX的Mac电脑上!约塞米蒂0.10。Python和Django的默认版本是2.7和1.5。我想建立一个具有Django 1.8的virtualenv,因此我将执行以下操作: $ virtualenv --no-site-packages django18env New python executable in django18env/bin/python2.7 Also creating executable in django18env/bin/python Installin

我在一台运行OSX的Mac电脑上!约塞米蒂0.10。Python和Django的默认版本是2.7和1.5。我想建立一个具有Django 1.8的virtualenv,因此我将执行以下操作:

$ virtualenv --no-site-packages django18env
New python executable in django18env/bin/python2.7
Also creating executable in django18env/bin/python
Installing setuptools, pip...done.
$ source django18env/bin/activate
(django18env)$ 
然后我将安装Django 1.8

(django18env)$ sudo pip install django==1.8
Password:
Downloading/unpacking django==1.8
  Downloading Django-1.8-py2.py3-none-any.whl (6.2MB): 6.2MB downloaded
Installing collected packages: django
Successfully installed django
Cleaning up...
(django18env)$  
运行之后,我将Django安装在django18env/lib/python2.7/site-packages/Django下

如果我查看该目录中的_uinit__uuu.py文件,它会显示:

从django.utils.version导入获取\u版本 版本=(1,8,0,'最终版',0)

因此,看起来virtualenv目录中安装了正确的版本。但是,如果我使用django admin--我得到的版本:

(django18env)$ django-admin version
1.5.4
我还尝试在虚拟环境中启动python,并以这种方式获得django版本:

(django18env)$ python
Python 2.7.8 (default, Jul 29 2014, 21:50:48) 
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'1.5.4'
>>> 
在vertualenv中安装1.8后,为什么它仍然指向1.5

我在这里读过很多其他的文章,但是不能让版本指向1.8

非常感谢您的帮助


谢谢不要在virtualenv上使用sudo。vitualenv的观点是,安装软件不是系统范围的,而是真正针对该环境。但无论是在virtualenv内部还是外部,如果您使用sudo,它都会在全球范围内为您的系统安装软件

ziya@ziya:~/Desktop/coursera/python/lorem$ virtualenv ipsum
New python executable in ipsum/bin/python2.6
Also creating executable in ipsum/bin/python
Installing setuptools, pip...done.
#created a virtualenv
ziya@ziya:~/Desktop/coursera/python/lorem$ cd ipsum/
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ . bin/activate
# will now install package with sudo 
(ipsum)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ sudo pip install sudokulib # i don't know what it is, just installing.
[sudo] password for ziya: 
.....
Collecting sudokulib
/usr/local/lib/python2.7/dist-packages # attention to this path!
...
Successfully installed sudokulib-0.6a0
(ipsum)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sudokulib # import the newly installed module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sudokulib
>>> exit()
(ipsum)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ deactivate
#deactivating virtualenv and starting default python
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ python
Python 2.7.3 (default, Dec 18 2014, 19:10:20) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sudokulib
>>> sudokulib.__version__
'0.6a' #here it is!
>>> exit()
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ . bin/activate
(ipsum)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ pip install sudokulib #now installing the same module without sudo
Collecting sudokulib
  Downloading sudokulib-0.6a.tar.gz
    /home/ziya/Desktop/coursera/python/lorem/ipsum/lib/python2.6/site-packages
.... 
Successfully installed sudokulib-0.6a0
(ipsum)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sudokulib
>>> sudokulib.__version__
'0.6a' #seems ok now :)
>>> 
ziya@ziya:~/Desktop/coursera/python/lorem$virtualenv ipsum
ipsum/bin/python2.6中新的python可执行文件
还在ipsum/bin/python中创建可执行文件
安装setuptools,pip…完成。
#创造了一个虚拟世界
ziya@ziya:~/Desktop/coursera/python/lorem$cd ipsum/
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$。垃圾箱/激活
#现在将使用sudo安装软件包
(同侧)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$sudo pip install sudokulib#我不知道它是什么,只是安装而已。
ziya的[sudo]密码:
.....
收集sudokulib
/usr/local/lib/python2.7/dist-packages#注意这条路径!
...
已成功安装sudokulib-0.6a0
(同侧)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$python
Python 2.6.5(r265:79063,2010年4月16日,13:57:41)
[GCC 4.4.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入sudokulib#导入新安装的模块
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为sudokulib的模块
>>>退出()
(同侧)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$deactivate
#停用virtualenv并启动默认python
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$python
Python 2.7.3(默认,2014年12月18日,19:10:20)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入sudokulib
>>>sudokulib.\uuu版本__
“0.6a”#在这里!
>>>退出()
ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$。垃圾箱/激活
(同侧)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$pip install sudokulib#现在不使用sudo安装相同的模块
收集sudokulib
下载sudokulib-0.6a.tar.gz
/home/ziya/Desktop/coursera/python/lorem/ipsum/lib/python2.6/site-packages
.... 
已成功安装sudokulib-0.6a0
(同侧)ziya@ziya:~/Desktop/coursera/python/lorem/ipsum$python
Python 2.6.5(r265:79063,2010年4月16日,13:57:41)
[GCC 4.4.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入sudokulib
>>>sudokulib.\uuu版本__
“0.6a”现在似乎还可以:)
>>> 

我发现了问题。如上所述,Django 1.8安装在virtualenv OK中,但Python没有使用它。在vitualenv中,我启动了Python,然后:

>>>import django
>>>django.__file__
这表明Django是从以下国家进口的: /usr/local/ceral/python/2.7.8/Frameworks/python.framework/Versions/2.7/lib/python2.7/site-packages

当我查看我的.bash_档案时,有一行:

export PYTHONPATH=$PYTHONPATH:/usr/local/Cellar/python/2.7.8/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
不确定这是如何/何时出现的,但我对它进行了注释,重新启动了shell,现在我在virtualenv中获得了Django1.8,在virtualenv之外获得了旧的(默认)版本1.5


感谢您的帮助和建议

当您在virtualenv中时,请尝试键入
哪种python
您得到了什么?您好,我得到了:/Library/WebServer/Documents/vhosts/django/django18env/bin/python,它指向virtualenvTry中的版本,直接在virtualenv中调用python。我已经尝试过了。如果我从virtualenv运行pip-install-django,它会说它可以找到一个现有的版本(系统范围的1.5),而不会安装它。如果我尝试pip install django==1.8,那么它会将django版本1.8添加到virtualenv中的Python站点包中,但在查找版本时仍然使用旧的1.5