Python脚本:在Shell中运行,但在现实生活中失败,因为无法导入模块
我有一个脚本,它在pythonshell中运行良好,但双击它时无法导入PIL模块(但它确实在Shell中导入了PIL模块) 怎么了?我需要一个不同的shebang吗?我在Windows 7上:Python脚本:在Shell中运行,但在现实生活中失败,因为无法导入模块,python,import,shebang,Python,Import,Shebang,我有一个脚本,它在pythonshell中运行良好,但双击它时无法导入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(st
#!/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"
Windows忽略了shebang行(即使它尊重它,也无法执行
/usr/bin/env
——它在Windows上不存在)。在资源管理器中双击可启动脚本,其中包含与扩展名.py
关联的程序。检查您是否已将其设置为Python的正确版本。Windows会忽略shebang行(即使它尊重它,也无法执行/usr/bin/env
——它在Windows上不存在)。在资源管理器中双击可启动脚本,其中包含与扩展名.py
关联的程序。检查您是否已将其设置为正确的Python版本。听起来您为不同版本的Python安装了PIL,而不是设置为在Windows中打开.py文件。如果您使用的是Python 2.7,则PIL将自身安装到C:\Python27\Lib\site packages\PIL
中,在这种情况下,您需要确保Windows使用C:\Python27\Python.exe
打开.py文件。您可以右键单击.py文件,单击打开方式->选择默认程序。。。将其设置为安装了PIL的Python版本。听起来您安装了PIL的Python版本与设置为在Windows中打开.py文件的Python版本不同。如果您使用的是Python 2.7,则PIL将自身安装到C:\Python27\Lib\site packages\PIL
中,在这种情况下,您需要确保Windows使用C:\Python27\Python.exe
打开.py文件。您可以右键单击.py文件,单击打开方式->选择默认程序。。。要将其设置为已安装PIL的Python版本,请添加以下行
import sys
print sys.executable
到您的代码。当您在shell中运行它时,您将看到它是一个不同的python可执行文件,而不是双击.py文件
如果要控制使用哪个已安装的python版本来运行脚本,而不是简单地运行脚本,请在windows命令窗口中键入以下内容
c:\python27\python.exe scriptname.py
根据需要替换python目录和脚本名称。添加行
import sys
print sys.executable
到您的代码。当您在shell中运行它时,您将看到它是一个不同的python可执行文件,而不是双击.py文件
如果要控制使用哪个已安装的python版本来运行脚本,而不是简单地运行脚本,请在windows命令窗口中键入以下内容
c:\python27\python.exe scriptname.py
适当地替换python目录和脚本名。我也遇到了这个问题,但意识到我需要更新
app.yaml
文件。将此粘贴到库下
:
- name: PIL
version: "1.1.7"
我也遇到了这个问题,但意识到我需要更新
app.yaml
文件。将此粘贴到库下
:
- name: PIL
version: "1.1.7"
我没有在cmd中运行的经验,我是用cd/导航到python.exe打开它,还是导航到脚本目录并说“python myscript.py”?@Mack:对不起,我将上面的“shell”解释为
cmd
,并询问您使用的命令行。现在我看到你说的是“pythonshell”。@Sven Marnach:在运行命令行之后,是smae输出“没有名为PIL的模块”,我不确定你所说的shell和“真实生活”之间的区别是什么意思。都是真的。但当您双击它时,它可能正在运行不同版本的Python。你安装了多个版本吗?@Keith:我有两个版本的python 2.5和2.7。PYTHONPATH环境变量是这个“C:/Python27/python.exe”对吗?我没有在cmd中运行的经验,我是用cd/导航到python.exe打开它,还是导航到脚本目录并说“python myscript.py”?@Mack:对不起,我把上面的“shell”解释为cmd
,并询问您使用的命令行。现在我看到你说的是“pythonshell”。@Sven Marnach:在运行命令行之后,是smae输出“没有名为PIL的模块”,我不确定你所说的shell和“真实生活”之间的区别是什么意思。都是真的。但当您双击它时,它可能正在运行不同版本的Python。你安装了多个版本吗?@Keith:我有两个版本的python 2.5和2.7。PYTHONPATH环境变量是“C:/Python27/python.exe”,对吗?使用PYTHONPATH进行搜索通常是错误的,它不能解释为什么它在“Shell”中工作。使用PYTHONPATH进行搜索通常是错误的,它不能解释为什么它在“Shell”中工作。