【问题标题】:How to prevent conda virtual env pip from using Python 2.7 system libraries?如何防止 conda virtual env pip 使用 Python 2.7 系统库?
【发布时间】:2019-01-31 21:29:32
【问题描述】:

我在 Ubuntu 16.04 上全新安装了 Anaconda 4.5.10(Python 3.6 64 位版本)。我使用以下命令创建了一个名为 py2.7 的 Python 2.7 conda env:

conda create -n py2.7 python=2.7

激活环境which pip 后返回/home/sam/anaconda3/envs/py2.7/bin/pip。当我尝试使用 pip 安装任何东西时,我得到一个依赖错误。例如:

(py2.7) sam@sam-M3:~$ pip install numpy
/home/sam/.local/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.3.0) doesn't match a supported version!
  RequestsDependencyWarning)
Traceback (most recent call last):
  File "/home/sam/anaconda3/envs/py2.7/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 18, in <module>
    from pip.commands import get_summaries, get_similar_commands
  File "/usr/lib/python2.7/dist-packages/pip/commands/__init__.py", line 6, in <module>
    from pip.commands.completion import CompletionCommand
  File "/usr/lib/python2.7/dist-packages/pip/commands/completion.py", line 4, in <module>
    from pip.basecommand import Command
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 19, in <module>
    from pip.req import InstallRequirement, parse_requirements
  File "/usr/lib/python2.7/dist-packages/pip/req/__init__.py", line 3, in <module>
    from .req_install import InstallRequirement
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 18, in <module>
    from pip._vendor.distlib.markers import interpret as markers_interpret
  File "/home/sam/.local/lib/python2.7/site-packages/distlib/markers.py", line 108, in <module>
    DEFAULT_CONTEXT = default_context()
  File "/home/sam/.local/lib/python2.7/site-packages/distlib/markers.py", line 97, in default_context
    'platform_python_implementation': platform.python_implementation(),
  File "/usr/lib/python2.7/platform.py", line 1481, in python_implementation
    return _sys_version()[0]
  File "/usr/lib/python2.7/platform.py", line 1443, in _sys_version
    repr(sys_version))
ValueError: failed to parse CPython sys.version: '2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55) \n[GCC 7.2.0]'

我可以看到该错误是由 Python 尝试访问 /usr/lib/python2.7 中的库引起的,但我只想访问属于 conda py2.7 env 的库。我的问题在这里解决:https://stackoverflow.com/a/46672866/10274139,但解决方案尚不清楚。激活 conda env 后,当我列出环境变量时,我看不到其他 Python 路径:

(py2.7) sam@sam-M3:~$ env | grep python
CONDA_PYTHON_EXE=/home/sam/anaconda3/bin/python

另外,如果我创建一个 Python 3.7 conda 环境,当我在该环境中pip install 时不会出错。

【问题讨论】:

  • 我认为您可以将其添加到您的 virtualenv bin/activate 文件中:export PYTHONPATH="/the/correct/path"
  • 激活 conda evn 后,我尝试了export PYTHONPATH="/home/sam/anaconda3/envs/py3.6/lib",但我得到了同样的错误。另请注意,echo $PYTHONPATH 在我设置之前是空的,并且这篇文章声称 Anaconda 不使用 PYTHONPATHstackoverflow.com/a/31841132/10274139

标签: python ubuntu anaconda conda


【解决方案1】:

我试图重现问题。我没有遇到任何错误。我在 Ubuntu 18.04 上使用 conda 版本 4.5.10(Python 3.6 64 位版本)。

我运行了以下命令来创建我的环境并使用 pip 进行安装。

conda create --name Test2 python=2.7
source activate Test2
pip install numpy

如果您运行类似的东西,请尝试更新 conda 看看是否有帮助。

更新 conda :

conda update conda

【讨论】:

  • 还可以考虑在问题中添加您用于创建环境的语句。
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2021-01-22
  • 2012-04-20
  • 1970-01-01
相关资源
最近更新 更多