【问题标题】:Python 3 virtualenv problemsPython 3 虚拟环境问题
【发布时间】:2015-03-08 06:57:21
【问题描述】:

我遇到了类似于this post 的问题,但我已经在运行最新版本的virtualenv,而且我还得到了一个不同的ImportError

使用 2.7 版(默认)的 virtualenv 可以正常工作,但我需要将 python3 用于另一个项目。我在 OSX 10.10.2 中使用brew install python3 安装了它。

当我尝试时:

> pip install --upgrade virtualenv
Requirement already up-to-date: virtualenv in /Library/Python/2.7/site-packages
Cleaning up...

> virtualenv --version
12.0.7

> virtualenv -p python3 test

我仍然得到:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 73, in <module>
    __boot()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/site.py", line 2, in __boot
    import sys, imp, os, os.path   
  File "/Users/user/Desktop/project/studyprocessor/venv/bin/../lib/python3.4/imp.py", line 22, in <module>
    from importlib import util
  File "/Users/user/Desktop/project/studyprocessor/venv/bin/../lib/python3.4/importlib/util.py", line 12, in <module>
    from contextlib import contextmanager
ImportError: No module named 'contextlib'
ERROR: The executable venv/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Desktop/project/studyprocessor' (should be '/Users/user/Desktop/project/studyprocessor/venv')
ERROR: virtualenv is not compatible with this system or executable

有什么想法吗?

【问题讨论】:

    标签: python python-3.x virtualenv


    【解决方案1】:

    您使用的pip 程序对应于Python 2.7 版本。您需要使用与 Python 3.x 对应的 pip。所以,你应该使用

    pip3 install virtualenv
    

    或者,您可以使用venv module 在 Python 3.3+ 中创建虚拟环境,如下所示

    python3 -m venv test
    

    【讨论】:

    • pip3 install --upgrade virtualenv 给我Requirement already up-to-date: virtualenv in /usr/local/lib/python3.4/site-packages
    • @OpenUserX03 您可能想尝试我在回答中建议的替代选项。
    【解决方案2】:

    尝试关注

    virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
    
    workon py3
    

    【讨论】:

    • 虽然这个答案可能是正确的,但请添加一些解释。传递底层逻辑比仅仅提供代码更重要,因为它可以帮助 OP 和其他读者自己解决这个问题和类似问题。
    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2020-10-20
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多