Python 双击 Windows 不执行脚本

Python script doesn't execute by doubleclick on Windows

对于这样的项目结构:

/tumblr
    /tumblr
        /module_foo
            __init__.py
            submodule_foo.py
        /module_bar
            __init__.py
            submodule_bar.py
        __init__.py
        bot.py

我正在做类似的事情:

import sys
sys.path.append('C:\repos\bot\tumblr\tumblr')

from tumblr.bot import Bot

class SubmoduleFoo(Bot):
    def __init__(self):
        super().__init__()
        # ...
    # ...
if __name__ == "__main__":
    SubmoduleFoo()

bot.py 只定义了一个带有一些初始化的空 class:

import sys
sys.path.append('C:\repos\bot\tumblr\tumblr')

class Bot:
    def __init__(self):
        self.settings = dict()
        # ...

如果我从命令行调用这些脚本,它们会起作用:

python C:\path\to\submodule_foo.py

如果我双击 python submodule_foo.py "script" 它不起作用。

我认为问题是继承引起的,调用了parent init

但是因为我只是双击它,所以我不知道如何正确调试它。

我试图包括一个:

with open('codes.txt', 'a') as file:
    file.write("It Works \n")

就在 if __name__ == "__main__": 语句之后并且不起作用:$

我的 PATH 变量(在 windows 10 中)包括 c:\python34c:\python34\scripts 我还有一个 PYHOME env 变量指向 c:\python34

而且我已经尝试过这个解决方案:Python scripts stopped running on double-click in Windows但它对我不起作用。

我还尝试通过 python 解释器创建这些 classes。 tumblr.bot.Bot() 的导入工作正常

我 运行 没有想法。

由于您的文件输出不起作用,因此可能 python 解释器根本没有启动。右键单击 Windows 资源管理器中的文件,找到显示 "opens with" 的位置,然后按按钮 "Change" 它看起来不正确。

在“开始”中键入 cmd 打开 DOS 命令提示符,并尝试 运行 您的脚本,无论是否指定解释器。

c:\home>python.exe myscript.py

c:\home>myscript.py

如果#1 有效而#2 无效,这意味着 Windows 未配置为使用正确的解释器打开 *.py 文件。

要在双击启动脚本时查看输出,可以显示如下错误消息:

#!/usr/bin/env python
import sys
try:
# your code here   
# your code here   
# your code here   

except Exception as e:
    print("\nTHERE WAS AN ERROR PROCESSING YOUR REQUEST:", e, file=sys.stderr)
    input("Press Enter to exit...")

强烈推荐 stderr 通道,因为默认情况下 Python 在 latin-1 的 MS 版本中打印到控制台,任何 Unicode 字符都会触发编码异常。 stderr没有这个限制。