Python3 总是显示 ImportError 信息

标签 python python-2.7 python-3.x pip importerror

每当我尝试运行脚本时,python 解释器总是显示 ImportError 消息,例如(例如)No module named 'setuptools'。因此,我尝试使用 apt-get 安装(或满足此要求)...我对 Python 2.7 和 Python 3.5 都执行此操作,直到已满足要求

首先,我不使用 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,但我知道这会在我的系统中导致比我尝试解决的问题更多的问题。

最佳答案

根据您对问题的描述,您可能一直在使用 apt 和/或 pip 安装所需软件包的 Python 2 版本。例如,sudo apt-get install python-django 将安装 Python 2 版本的 Django,而 sudo apt-get install python3-django 将安装 Py3 版本。

你最终会遇到需要使用 pip 的情况,因为你想要的包不会在 Debian/Ubuntu 存储库中。在这种情况下,请确保您使用的是正确的 pip。尝试运行

pip -V

pip3 -V

在您调用 pip 时查看附加了哪些 Python 版本,然后使用适合您希望定位的 Python 版本的版本。

最后,在任何情况下都不应将 Python 2 路径添加到 Python 3 的 sys.path


编辑

这是我在 Ubuntu 16.04 上使用系统的 Python 3.5.2 的 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。从用户的角度来看,两者之间的差别很小,所以不用担心。我还故意改变了一些路径(说来话长)。

关于Python3 总是显示 ImportError 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185360/

相关文章:

python - 在Python中打印小数点到8位精度?

python-3.x - 如何在 Python 3.8 中使用 TLS 1.0?

python - 如何动态追加到字典中的数组?

python-2.7 - Pandas - 将列合并为一列,保留列名称

python - 类对象的动态实例相互覆盖

python - 使用 __init__ 为四个向量创建一个类

python - 在python项目中使用相对路径读取文件

linux - 在 python3 中设置 SO_RCVTIMEO 套接字选项

python - 用 Python 编写格式良好的文本

Python3 wifi模块返回对象,而不是wifi网络列表