Python脚本:在Shell中运行正常,但因无法导入模块而失败
我有一个脚本,在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的目录和脚本名称。