使用最新版本的python创建virtualenv

时间:2015-08-06 21:12:02

标签: python virtualenv

我最近将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

非常感谢任何其他想法/建议。谢谢!

2 个答案:

答案 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所描述的那样,但我只想分享我在将来遇到这个问题时使用的确切步骤。

  1. 打开一个运行首选python版本的python终端。

    $ python
    
  2. 在python终端中运行以下命令:

    >>> import sys
    >>> print sys.executable
    /path/to/python/that/is/being/used/
    >>> exit()
    
  3. 使用以下命令和新获取的python路径创建一个新的virtualenv:

    virtualenv -p /path/to/python/that/is/being/used/ ENV