OS(Linux的):Ubuntu 14.04.4 LTS(忠实的塔尔羊)为什么Python 3在我的Python 2.7包目录中查找包?
出于某种原因,我的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分发的安装包,并没有安装Python的第3版在/usr/local/lib/python3.5/site-packages
。
要添加更多的混乱混进去,我试着去直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站点包路径 – rll
你也应该张贴sys.path'的'值。您也可以在其中一个搜索到的位置使用'.pth'文件。 'sys.path'应该说明这一点。它也许值得在详细模式('python -v')下运行以查看从哪个模块导入。 – theorifice