我最近将Mac的python版本更新为2.7.10,我可以确认发生了这种变化:
$ python --version
Python 2.7.10
然而,当我创建一个新的virtualenv时,python版本仍然是旧版本:
(ENV)$ python --version
Python 2.7.6
有关如何创建使用Python 2.7.10的virtualenv的任何建议吗?
要明确,我的问题与this one的不同。 python2.7.6
中没有名为python2.7.10
和/usr/bin/
的不同二进制文件;相反,有一个名为python2.7
的二进制文件。我已经尝试过以下virtualenv -p
序列无效。 :(
$ virtualenv -p /usr/bin/python2.7 ENV
$ source ENV/bin/activate
(ENV)$ python --version
Python 2.7.6
非常感谢任何其他想法/建议。谢谢!
答案 0 :(得分:3)
virtualenv
命令本身是一个包装脚本,它与安装的python一起运行。
在我的系统上,我安装了几个版本的python--来自Python.org的3.4,系统python和来自homebrew的2.7.9。我的virtualenv
看起来像这样:
#!/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4
# -*- coding: utf-8 -*-
import re
import sys
from virtualenv import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
在你的情况下,它正在调用你的旧python(2.7.6)。
每次安装virtualenv时,都会替换包装器脚本。因此,我个人从不使用virtualenv
包装器脚本,我总是直接用python调用模块,所以我知道我正在使用哪个python。
$ python -m virtualenv <your-env>
如果您收到“没有名为virtualenv的模块”错误,那么这意味着您的新python没有在其网站包中安装virtualenv。
关于-p
的评论:值得注意的是,如果你删除了旧的python,virtualenv -p
不起作用。你会从bash得到一个不友好的“糟糕的翻译”错误。
答案 1 :(得分:1)
我能够解决我的问题。从概念上讲,这个问题就像@Seth所描述的那样,但我只想分享我在将来遇到这个问题时使用的确切步骤。
打开一个运行首选python版本的python终端。
$ python
在python终端中运行以下命令:
>>> import sys
>>> print sys.executable
/path/to/python/that/is/being/used/
>>> exit()
使用以下命令和新获取的python路径创建一个新的virtualenv:
virtualenv -p /path/to/python/that/is/being/used/ ENV