【问题标题】:Can't create virtualenv using Python 3.2. Whodunnit? Pip or setuptools or Python 2.7?无法使用 Python 3.2 创建 virtualenv。谁知道? Pip 或 setuptools 或 Python 2.7?
【发布时间】:2016-06-17 08:15:07
【问题描述】:

我无法使用 virtualenvwrapper 正确安装基于 Python 3.2 的虚拟环境。我碰到了一个神秘的墙,现在我正在寻找更多的选择来解决我的 WHODUNNIT?困境。

一些背景

我首先尝试使用 Python 2.7(系统的 Python 默认值)中的 pip 1.5.6 安装 virtualenvwrapper。当我试图以某种方式卸载/升级我的 pip 时,我把它弄坏了。现在,如果我尝试:

$ pip 
    Traceback (most recent call last):
  File "/usr/local/lib/python3.2/dist-packages/distribute-0.6.28-py3.2.egg/pkg_resources.py", line 2816, in <module>
    working_set.require(__requires__)
  File "/usr/local/lib/python3.2/dist-packages/distribute-0.6.28-py3.2.egg/pkg_resources.py", line 690, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.2/dist-packages/distribute-0.6.28-py3.2.egg/pkg_resources.py", line 592, in resolve
    raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (pip 7.1.2 (/usr/local/lib/python3.2/dist-packages), Requirement.parse('pip==1.5.6'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.2/dist-packages/distribute-0.6.28-py3.2.egg/pkg_resources.py", line 2820, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/local/lib/python3.2/dist-packages/distribute-0.6.28-py3.2.egg/pkg_resources.py", line 588, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==1.5.6

但是,我设法安装了 PIP3.2。

$ pip3.2 --version
pip 7.1.2 from /usr/local/lib/python3.2/dist-packages (python 3.2)

所以我继续安装 virtualenvwrapper 没有问题:

$ sudo pip3.2 install virtualenvwrapper

这是 Python 3.2 所在的地方

$ whereis python3.2.3 
whereis python3.2.3
python3.2: /usr/bin/python3.2 /etc/python3.2 /usr/lib/python3.2 /usr/bin/X11/python3.2 /usr/local/lib/python3.2 /usr/include/python3.2 /opt/Python-3.2/bin/python3.2 /usr/share/man/man1/python3.2.1.gz

这是我的 virtualenv 版本:

$ virtualenv --version
14.0.6

错误

在创建 virtualenv 之前,我修改了我的 .bashrc

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/admin/workspace
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

在获取它之后(即 source ~/.bashrc),我无法启动 virtualenv。

$ mkvirtualenv --python=/usr/bin/python3.2 venv
Running virtualenv with interpreter /usr/bin/python3.2
New python executable in /home/admin/.virtualenvs/venv/bin/python3.2
Also creating executable in /home/admin/.virtualenvs/venv/bin/python
/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv_support/pip-8.0.2-py2.py3-none-any.whl/pip/_vendor/pkg_resources/__init__.py:87: UserWarning: Support for Python 3.0-3.2 has been dropped. Future versions will fail here.
Traceback (most recent call last):
  File "/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv.py", line 2304, in <module>
    main()
  File "/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv.py", line 705, in main
    symlink=options.symlink)
  File "/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv.py", line 924, in create_environment
    download=download,
  File "/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv.py", line 843, in install_wheel
    cert_data = pkgutil.get_data("pip._vendor.requests", "cacert.pem")
  File "/usr/lib/python3.2/pkgutil.py", line 573, in get_data
    loader = get_loader(package)
  File "/usr/lib/python3.2/pkgutil.py", line 461, in get_loader
    return find_loader(fullname)
  File "/usr/lib/python3.2/pkgutil.py", line 471, in find_loader
    for importer in iter_importers(fullname):
  File "/usr/lib/python3.2/pkgutil.py", line 427, in iter_importers
    __import__(pkg)
  File "/usr/local/lib/python3.2/dist-packages/virtualenv-14.0.6-py3.2.egg/virtualenv_support/pip-8.0.2-py2.py3-none-any.whl/pip/__init__.py", line 15, in <module>

如果我输入错误之后...

$ workon
$

有趣的是 venv 是在 .virtualenvs 中创建的

可能的原因

在网络上的其他地方阅读(我发现只有一个人有类似的问题)它可以使用以前版本的 virtualenv 解决(我尝试过没有成功),或者我使用了不正确的 pip 和/或 virtualenv 和/或 virtualenvwrapper。或者可能是我的 Python2.7 在后台乱搞。

更新:设置工具

或者设置工具呢? Apparently it has to do。尝试使用 PIP 1.5.6 时出现此错误

 UserWarning: Support for Python 3.0-3.2 has been dropped. Future versions will fail here.
 warnings.warn(msg)

另一个更新:修复了原始点数

我设法使用以下方法修复了原始点:

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ pip --version 
pip 8.0.3 from /usr/local/lib/python2.7/dist-packages (python 2.7)

更新:Virtualwrapper 不是!

在我自己的“Whodunnit”传奇中,我会说 virtualwrapper 与此无关。这里:

$ virtualenv -p /usr/bin/python3.2 ~/.virtualenvs/venv32
Running virtualenv with interpreter /usr/bin/python3.2
New python executable in /home/admin/.virtualenvs/venv32/bin/python3.2
Also creating executable in /home/admin/.virtualenvs/venv32/bin/python
/usr/local/lib/python2.7/dist-packages/virtualenv_support/pip-8.0.2-py2.py3-none-any.whl/pip/_vendor/pkg_resources/__init__.py:87: UserWarning: Support for Python 3.0-3.2 has been dropped. Future versions will fail here.

但问题仍然存在。我还能尝试什么?

提前致谢!

【问题讨论】:

    标签: pip virtualenv setuptools virtualenvwrapper python-3.2


    【解决方案1】:

    如果你想使用 Python 3.2,你必须使用 pip https://virtualenv.pypa.io/en/latest/changes.html#id7

    为什么需要使用古老的 Python 3.2?您可以做的最好的事情是安装和使用更高级的 Python >= 3.4。

    【讨论】:

    • 谢谢,joeforker!我在 Python 3.2 中编写了多个程序。我将尝试使用旧的 pip 安装旧的 virtualenv 版本并在此处返回结果。
    • 用旧的 virtualenv 安装旧的 pip 可能更容易,virtualenv 应该捆绑 pip。
    • 嗯,使用 pip 1.5.6 和 7.1.2 安装 virtualenv 和 virtualenvwrapper 都给了我同样的问题。
    • pip install "virtualenv
    • 哇!惊人的。不知道你可以用 super pip 做到这一点!
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2013-08-10
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多