Python脚本:在Shell中运行正常,但因无法导入模块而失败

1 投票
4 回答
2699 浏览
提问于 2025-04-16 19:40

我有一个脚本,在Python Shell里运行得很好,但当我双击它时,却无法导入PIL模块(在Shell里可以导入PIL模块)。

这是怎么回事呢?我需要换一个shebang吗?我在使用Windows 7:

#!/usr/bin/env python
"""

"""

try:
    from   PIL import Image
    import os
    import datetime
    import time

except Exception, e:
    raw_input(str(e))

# Running this script in the Shell, the code gets to here
# Running this script in real life (just double click it) it prints "no module PIL"

4 个回答

0

听起来你安装的PIL是针对一个和Windows打开.py文件时使用的Python版本不同的。如果你使用的是Python 2.7,PIL会安装在C:\Python27\Lib\site-packages\PIL这个地方。在这种情况下,你需要确保Windows用C:\Python27\python.exe来打开.py文件。你可以右键点击.py文件,选择“打开方式” -> “选择默认程序...”来设置为你安装PIL的那个Python版本。

2

在Windows系统中,开头的那行叫做“shebang”的东西会被忽略。即使它能识别这行,也无法执行 /usr/bin/env,因为这个在Windows上是不存在的。当你在文件管理器中双击一个脚本时,它会用和 .py 后缀关联的程序来启动这个脚本。所以,你需要确认一下这个关联的程序是正确的Python版本。

4

在你的代码中添加以下几行:

import sys
print sys.executable

你会发现,当你在命令行中运行它时,使用的是一个不同的Python可执行文件,而不是直接双击.py文件。

如果你想控制用哪个安装的Python版本来运行你的脚本,而不是简单地运行脚本,可以在Windows命令窗口中输入类似下面的内容:

c:\python27\python.exe scriptname.py

记得根据需要替换Python的目录和脚本名称。

撰写回答