Python3自动安装模块故障:安装pyAesCrypt后仍报ModuleNotFoundError
这个问题我之前也碰到过,核心原因是你的pip3和运行脚本的Python解释器不属于同一个环境——明明安装日志显示成功,但脚本就是找不到模块,本质是包装错地方了。
问题根源
系统里可能存在多个Python3版本(比如python3.6、python3.9并行),或者你用了虚拟环境但没激活。此时pip3会把包安装到它对应的Python版本的site-packages目录,但你运行脚本时调用的是另一个Python解释器,自然找不到刚装的包。
具体解决方案
方法一:用当前脚本的Python解释器调用pip(最可靠)
修改你的代码,不再直接用pip3,而是通过sys.executable获取当前运行脚本的Python路径,再调用它自带的pip来安装。这样能保证安装的包和当前脚本的环境完全匹配:
import subprocess import sys try: import pyAesCrypt print('package: pyAesCrypt found') except ImportError: # 用当前Python解释器的pip执行安装 mod_inst = subprocess.Popen(f"{sys.executable} -m pip install pyAesCrypt", shell=True) mod_inst.wait() import pyAesCrypt print('package: pyAesCrypt installed')
方法二:检查Python的包搜索路径
可以在脚本开头加一段代码,查看当前Python解释器能识别的包路径:
import sys print("当前Python的包搜索路径:") for path in sys.path: print(path)
然后对比pip3 install pyAesCrypt实际安装的路径(可以通过pip3 show pyAesCrypt命令查看Location字段),如果这个路径不在sys.path里,你可以手动把它添加进去:
sys.path.append("/path/to/pyAesCrypt/installed/directory")
方法三:确认虚拟环境状态
如果你使用了虚拟环境,一定要确保运行脚本前已经激活了对应的环境:
- Linux/macOS:
source your_env_name/bin/activate - Windows:
your_env_name\Scripts\activate
你的错误日志参考
Collecting pyAesCrypt
Using cached https://files.pythonhosted.org/packages/c5/99/ebae89da08a443d0191eff631d66b71955eec7e370e2a309d85e499ca18a/pyAesCrypt-0.4.3-py3-none-any.whl
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from pyAesCrypt) (2.6.1)
Installing collected packages: pyAesCrypt
Successfully installed pyAesCrypt-0.4.3
Traceback (most recent call last):
File "smb.py", line 6, in
import pyAesCrypt
ModuleNotFoundError: No module named 'pyAesCrypt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "smb.py", line 13, in
import pyAesCrypt
ModuleNotFoundError: No module named 'pyAesCrypt'
内容的提问来源于stack exchange,提问作者user3686478

