【问题标题】:Why is Python 3 looking in my Python 2.7 package directory for packages?为什么 Python 3 在我的 Python 2.7 包目录中查找包?
【发布时间】:2023-03-19 08:47:01
【问题描述】:

操作系统 (Linux):Ubuntu 14.04.4 LTS (Trusty Tahr)

出于某种原因,我的 Python 3.5.2 正在查看 Python 2.7 包目录而不是它自己的目录:

] python3 -m ensurepip

Ignoring indexes: https://pypi.python.org/simple
Requirement already satisfied (use --upgrade to upgrade):
    setuptools in /usr/local/lib/python3.5/site-packages
Requirement already satisfied (use --upgrade to upgrade):
    pip in /usr/local/lib/python2.7/dist-packages

更多细节:

] python3
Python 3.5.2 (default, Jul 29 2016, 09:41:38)
[GCC 6.1.1 20160511] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import site; site.getsitepackages()
['/usr/local/lib/python3.5/site-packages']
>>>

^^^-- 这似乎是正确的,并没有提及 2.7 包目录的任何内容。

它看起来应该只在/usr/local/lib/python3.5/site-packages 中查找,但由于某种原因,它也在查找/usr/local/lib/python2.7/dist-packages,它没有任何业务可以查找。

例如,看看当我尝试将 psycopg2 安装为 Python 3 模块时会发生什么:

] python3 -m pip install psycopg2
Requirement already satisfied (use --upgrade to upgrade):
    psycopg2 in /usr/local/lib/python2.7/dist-packages

它发现它是 2.7 发行版中的已安装包,但无法在 /usr/local/lib/python3.5/site-packages 中安装其 Python 3 版本。

为了增加更多混乱,我尝试直接访问pip 3,但无济于事:

] pip3 install psycopg2
Requirement already satisfied (use --upgrade to upgrade):
    psycopg2 in /usr/local/lib/python2.7/dist-packages

] cat `which pip3`
#!/usr/local/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

更新PYTHONPATH 被设置为/usr/local/lib/python2.7/dist-packages。这就是上述问题的原因。感谢用户 be_good_do_good 帮助我找出要转动的螺丝 让事情按应有的方式工作。

【问题讨论】:

  • 你能发布你的PATH值和PYTHONPATH值
  • @be_good_do_good 也是这么想的,可能路径中有手动添加的 2.7 站点包
  • 您还应该发布sys.path 的值。您也可能在搜索到的位置之一中有一个.pth 文件。 sys.path 应该说明这一点。可能还值得在详细模式 (python -v) 下运行以查看从何处导入模块。
  • 这是我见过的最奇怪的提示:]。我一直在寻找匹配的[
  • @be_good_do_good,向你致敬:PYTHONPATH 设置为 /usr/local/lib/python2.7/dist-packages 随时发表您的评论作为正确接受答案信用的答案..

标签: python python-3.x pip python-3.5


【解决方案1】:

PYTHONPATH 可能已设置为 2.7 分发包,这可能是导致此问题的原因。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多