Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本:在Shell中运行,但在现实生活中失败,因为无法导入模块_Python_Import_Shebang - Fatal编程技术网

Python脚本:在Shell中运行,但在现实生活中失败,因为无法导入模块

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

我有一个脚本,它在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(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”中工作。