每当我尝试运行脚本时,python解释器总是会显示ImportError
消息,例如({)No module named 'setuptools'
。所以,我尝试使用apt-get
安装(或满足此要求)...我为Python 2.7和Python 3.5执行此操作直到Requirement already satisfied
。
首先,我不使用Python 2.7,但它是解释器的默认版本。那么,我怎么能解决这个问题才能使用Python 3.5?我试过这个:
>>> import sys
>>> print(sys.path)
['',
'/usr/local/lib/python35.zip',
'/usr/local/lib/python3.5',
'/usr/local/lib/python3.5/plat-linux',
'/usr/local/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/site-packages']
这是针对 Python3 ,对于Python2,我做了相同的比较路径,我得到了这个:
>>> import sys
>>> print(sys.path)
['',
'/usr/local/lib/python2.7/dist-packages/pygame-1.9.2b8-py2.7-linux-x86_64.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0']
现在......如果我使用append()
方法将Python2的所有路径添加到Python3中的路径,它是否可行?另外,我一直被认为完全卸载了Python2,但我知道这会在我的系统中引起更多问题,我试图解决这个问题。
答案 0 :(得分:2)
尝试:
python3.5 -m pip install setuptools
答案 1 :(得分:2)
根据您对问题的描述,您可能已经使用apt
和/或pip
安装了所需的Python 2版本的软件包。例如,sudo apt-get install python-django
将安装Django的Python 2版本,而sudo apt-get install python3-django
将安装Py3版本。
您最终会遇到需要使用pip
的情况,因为您希望赢得的软件包不在Debian / Ubuntu存储库中。在这种情况下,请确保您使用了正确的pip
。尝试运行
pip -V
和
pip3 -V
查看调用pip
时附加的Python版本,然后使用适合您希望定位的Python版本的版本。
最后,在任何情况下都不应该将Python 2路径添加到Python 3 sys.path
。
这是我使用系统的Python 3.5.2在Ubuntu 16.04上的sys.path
:
$ python3
Python 3.5.2 (default, Jul 5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from pprint import pprint as pp
>>> pp(sys.path)
['',
'/usr/local/lib/python3.5/dist-packages/pandas-0.18.1-py3.5-linux-x86_64.egg',
'/usr/local/lib/python3.5/dist-packages/github3.py-1.0.0a4-py3.5.egg',
'/usr/local/lib/python3.5/dist-packages/uritemplate.py-0.3.0-py3.5.egg',
'/usr/lib/python3/dist-packages',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/dist-packages']
>>> print(sys.executable)
/usr/bin/python3
>>>
当您拥有dist-packages
时,您会注意到这些路径是site-packages
路径。从用户的角度来看,两者之间的差异很小,所以不用担心。我还故意改变了一些路径(这是一个很长的故事)。