Python交互模式可导入pyftdi,脚本运行报ImportError问题求助
这种情况在Windows上确实挺常见的,大概率是你运行脚本的Python解释器和交互模式用的不是同一个版本/环境,给你拆解几个可能的原因和对应的解决思路:
1. Python版本/环境不匹配
Windows系统很容易同时存在多个Python环境(比如32位和64位版本、不同小版本,或者Anaconda/虚拟环境这类独立环境),交互模式下调用的py可能刚好指向了安装了pyftdi的那个解释器,但运行脚本时却默认用了另一个没装包的解释器。
验证方法:
- 在交互模式中输入以下代码,查看当前解释器路径和包搜索路径:
import sys print(sys.executable) # 输出当前Python解释器的绝对路径 print(sys.path) # 输出Python会搜索包的路径列表
- 在你的
foo.py脚本里也加上这两行代码,运行脚本后对比两者的输出。如果路径不一致,就实锤是环境不匹配的问题。
解决办法:
直接用交互模式里显示的那个Python解释器路径来运行脚本。比如如果交互模式输出的路径是C:\Python36-32\python.exe,就打开命令行运行:
C:\Python36-32\python.exe foo.py
2. 虚拟环境未激活
如果你使用了虚拟环境来管理依赖,交互模式可能是在激活虚拟环境后的状态下运行的,但直接运行脚本时没激活环境,导致解释器找不到虚拟环境里安装的pyftdi。
解决办法:
先激活对应的虚拟环境,再运行脚本。比如你用venv创建的虚拟环境,激活命令是:
your_venv_folder\Scripts\activate
激活后再执行py foo.py即可。
3. PATH环境变量顺序问题
Windows的PATH环境变量里如果存在多个Python解释器路径,py命令可能优先选择了没装pyftdi的那个版本。
验证方法:
在命令行输入py -0,可以列出当前系统中所有可用的Python版本,看看默认标注的版本是不是你安装了pyftdi的那个(也就是交互模式用的3.6.4 32位版本)。
解决办法:
运行脚本时指定具体的Python版本,比如:
py -3.6-32 foo.py
为什么Mac OS X上没这个问题?因为Mac的Python环境通常更统一,默认的python或python3命令指向的是同一个解释器,很少会出现这种版本或环境混淆的情况。
内容的提问来源于stack exchange,提问作者fearless_fool

