virtualenvwrapper + python3:语法无效

virtualenvwrapper + python3:语法无效

在 Ubuntu 14.04 上我运行

mkvirtualenv -p /usr/bin/python3 myvenv

我得到了

Running virtualenv with interpreter /usr/bin/python3
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 37, in <module>
    import ConfigParser
ImportError: No module named 'ConfigParser'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 39, in <module>
    import configparser as ConfigParser
  File "/usr/local/lib/python2.7/dist-packages/configparser.py", line 397
    _KEYCRE = re.compile(ur"%\(([^)]+)\)s")
                                         ^
SyntaxError: invalid syntax
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 15, in <module>
    from configparser import ConfigParser, NoOptionError, NoSectionError
  File "/usr/local/lib/python2.7/dist-packages/configparser.py", line 397
    _KEYCRE = re.compile(ur"%\(([^)]+)\)s")
                                         ^
SyntaxError: invalid syntax

Original exception was:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 37, in <module>
    import ConfigParser
ImportError: No module named 'ConfigParser'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 39, in <module>
    import configparser as ConfigParser
  File "/usr/local/lib/python2.7/dist-packages/configparser.py", line 397
    _KEYCRE = re.compile(ur"%\(([^)]+)\)s")
                                         ^
SyntaxError: invalid syntax

它显然正在尝试使用 python2 安装 python3 虚拟环境。我该如何解决这个问题?

答案1

我终于明白了。

sudo pip uninstall virtualenv
sudo pip3 install virtualenv

就这么简单。

答案2

python2.7 和 python3.4.0 之间应该virtualenv.py兼容。而你的版本例外,因为 python3 版本无法加载(重命名的)ConfigParser模块。

您似乎正在运行旧版本的virtualenvwrapper。在我的系统上virtualenv.py看起来像:

try:
    import ConfigParser
except ImportError:
    import configparser as ConfigParser

大约在第 37 行(virtualenvwrapper 版本 4.6.0),然后就恢复使用新名称了configparser

您可以尝试使用以下方法升级:

sudo pip install -U virtualenvwrapper

如果你最初安装virtualenvwrapperpip

答案3

这太奇怪了。我已经解决了这个问题,但又遇到了这个问题。我以前的建议不够。

这次我不得不卸载 pip 和 pip3,然后重新安装它们。我认为我的 pip 版本是使用 easy_install 以一种非常奇怪的方式安装的,但我可以使用以下命令卸载它:

sudo pip uninstall pip

然后我重新安装了pip:

sudo apt-get install python3-pip

相关内容