python - pip 在虚拟环境中执行错误的 python 库版本

标签 python virtualenv osx-mavericks virtualenvwrapper

我使用 virtualenvwrapper 创建了一个虚拟环境,然后尝试使用 pip 在其中安装 django。但是,由于 python 版本冲突,我不断收到错误消息。

$ mkvirtualenv env
$ workon env
$ pip install django
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/basecommand.py", line 134, in main
    status = self.run(options, args)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/commands/install.py", line 236, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/req.py", line 1085, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 201, in find_requirement
    page = self._get_page(main_index_url, req)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 554, in _get_page
    return HTMLPage.get_page(link, req, cache=self.cache)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 671, in get_page
    resp = urlopen(url)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/download.py", line 176, in __call__
    response = self.get_opener(scheme=scheme).open(url)
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/download.py", line 238, in get_opener
    headers.append(("User-agent", build_user_agent()))
  File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/download.py", line 35, in build_user_agent
    _implementation = platform.python_implementation()
  File "/Users/mingot/soft/anaconda/lib/python2.7/platform.py", line 1486, in python_implementation
    return _sys_version()[0]
  File "/Users/mingot/soft/anaconda/lib/python2.7/platform.py", line 1451, in _sys_version
    repr(sys_version))
ValueError: failed to parse CPython sys.version: '2.7.5 (default, Aug 25 2013, 00:04:04) \n[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]'

在系统中,我正在运行 python anaconda:

$ python 
Python 2.7.5 |Anaconda 1.8.0 (x86_64)| (default, Oct 24 2013, 07:02:20) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin

并且 $PATH 设置为

/Users/mingot/soft/anaconda/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin:/opt/X11/bin

在虚拟环境中,python 版本是:

(env)$ python
Python 2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin

$PATH:

/Users/mingot/virtualenvs/env/bin:/Users/mingot/soft/anaconda/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin:/opt/X11/bin

我了解到问题是在虚拟环境中,在执行非 anaconda python 2.7.5 时,它仍在使用来自 anaconda 库的 platforms.py,导致评估崩溃建议的正则表达式 here .我不关心在虚拟环境中使用哪个 python 版本。关于如何告诉虚拟环境中的 python 使用正确的 platforms.py 有什么建议吗?

谢谢!

最佳答案

我在安装了 Anaconda 的 Mac 上遇到了同样的问题。我修复它的方法是搜索 platform.py,然后修改以下内容(注释掉一行):

原创

_sys_version_parser = re.compile(
    r'([\w.+]+)\s*'
    '\|[^|]*\|\s*' # version extra
    '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
    '\[([^\]]+)\]?')

更改为

_sys_version_parser = re.compile(
    r'([\w.+]+)\s*'
    #'\|[^|]*\|\s*' # version extra # Just comment this line out
    '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
    '\[([^\]]+)\]?')

这是 virtualenv==1.10.1 和 anaconda 1.9.2

关于python - pip 在虚拟环境中执行错误的 python 库版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635107/

相关文章:

python - Linux终端术语和命令行混淆: pip install versus sudo apt-get and other terminal questions

python - numpy 数组的每一行的特定列组的总和

python - 是根算法

python - 如何使用继承在python中定义父对象?

python - 在 ubuntu 中更新现有 virtualenv 中的 python 版本

python - 设置 CKAN 虚拟环境的问题

python - selenium 无法截屏网页元素

r - 在小牛中安装 RMySQL

macos - 无法匹配包含自定义 View 的 Yosemite NSMenuItem 的鲜艳背景

c++ - 调用 CGPathAddArc 时 PyQt4/Qt 中止陷阱的原因是什么?