python 导入以交互方式工作,但不是来自脚本
python import works interactively but not from script
免责声明:我不是 Windows 专家,所以这可能是 Windows 的一些特殊之处。
我观察到这样一种情况,我可以在交互模式下导入模块,但在从文件请求时不能。这是 foo.py
的全文:
#!/usr/bin/env python
import pyftdi
当我在 Python 3.6.4 中尝试 运行 时,它失败了:
E:\>py foo.py
Traceback (most recent call last):
File "foo.py", line 2, in <module>
import pyftdi
ImportError: No module named pyftdi
...但是当我以交互方式导入模块时,它成功了:
E:\>py
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyftdi
>>>
(FWIW,在 Mac OS X 下重复此操作时我没有收到错误消息。)
有什么想法吗?
问题很可能是python的版本不同,安装了不同的模块。要解决此问题,您只需执行 py -3.6 foo.py
而不是 py foo.py
.
工作目录
我遇到过脚本从其工作目录导入而 shell 从全局库导入的情况。
免责声明:我不是 Windows 专家,所以这可能是 Windows 的一些特殊之处。
我观察到这样一种情况,我可以在交互模式下导入模块,但在从文件请求时不能。这是 foo.py
的全文:
#!/usr/bin/env python
import pyftdi
当我在 Python 3.6.4 中尝试 运行 时,它失败了:
E:\>py foo.py
Traceback (most recent call last):
File "foo.py", line 2, in <module>
import pyftdi
ImportError: No module named pyftdi
...但是当我以交互方式导入模块时,它成功了:
E:\>py
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyftdi
>>>
(FWIW,在 Mac OS X 下重复此操作时我没有收到错误消息。)
有什么想法吗?
问题很可能是python的版本不同,安装了不同的模块。要解决此问题,您只需执行 py -3.6 foo.py
而不是 py foo.py
.
工作目录
我遇到过脚本从其工作目录导入而 shell 从全局库导入的情况。