【问题标题】:Installed Python Modules Can't Be Imported无法导入已安装的 Python 模块
【发布时间】:2025-11-27 23:45:02
【问题描述】:

我有多个迹象表明我的 python 模块已安装,但有几个导致“没有名为..的模块”异常。比如……

root@raspberrypi:~# pip install pyfingerprint --no-cache-dir
Collecting pyfingerprint    
Downloading https://www.piwheels.org/simple/pyfingerprint/pyfingerprint-0.1-py3-none-any.whl
Requirement already satisfied: pyserial in /usr/local/lib/python3.5/dist-
packages (from pyfingerprint)
Requirement already satisfied: Pillow in /usr/lib/python3/dist-packages (from 
pyfingerprint)
Installing collected packages: pyfingerprint
Successfully installed pyfingerprint-0.1

那么,模块就找不到了……

root@raspberrypi:~# python
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyfingerprint
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'pyfingerprint'

还要注意,上面安装中的依赖模块被列为满足,但导入它们也失败...

>>> import pyserial
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'pyserial'
>>> import Pillow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'Pillow'

当我检查它们是否存在时,pip 同意...

pip freeze

...
Pillow==4.0.0    
...
pyfingerprint==0.1
...
pyserial==3.4
...

问题不仅限于此安装。 pip 说有许多模块在导入时存在失败。其他的都很好。

我已经尝试了以下 SO 帖子中的所有内容,但无济于事......

[Python pip install module is not found. How to link python to pip location?

sys.path 似乎指向正确的位置:

>>> import sys
>>> type(sys.path)
<class 'list'>
>>> for path in sys.path:
...     print(path)
... 

/usr/lib/python35.zip
/usr/lib/python3.5
/usr/lib/python3.5/plat-arm-linux-gnueabihf
/usr/lib/python3.5/lib-dynload
/root/.local/lib/python3.5/site-packages
/usr/local/lib/python3.5/dist-packages
/usr/lib/python3/dist-packages

我在这里不知所措。你有任何建议都会很棒。谢谢你。

更新

FWIW,这只是在我照常之后才发生的:

sudo apt-get update 
sudo apt-get upgrade 

从 uname 产生以下内容:

Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux

模块,或者至少是我正在导入的模块,在此之前运行良好。

【问题讨论】:

  • 为什么不现在建立一个新的清洁环境?

标签: python module pip


【解决方案1】:

会不会是pip命令安装了python2包? 例如,在我的系统上,我将 pip 用于 python 2,将 pip3 用于 python3 包。

【讨论】:

  • 我希望。 root@raspberrypi:~# pip3 install pyfingerprint 已满足要求:/usr/local/lib/python3.5/dist-packages 中的 pyfingerprint 已满足要求:/usr/local/lib/python3.5/dist-packages 中的 pyserial (来自 pyfingerprint)要求已经满足:/usr/lib/python3/dist-packages 中的枕头(来自 pyfingerprint)pip3 freeze 返回相同的模块列表。
【解决方案2】:

事实上,我无法使用 python 3.x 加载的模块在我在同一台机器上的 python 2.x 安装中被识别。

【讨论】: