【问题标题】:Python script doesn't execute by doubleclick on Windows在 Windows 上双击不会执行 Python 脚本
【发布时间】:2016-01-31 08:19:34
【问题描述】:

对于这样的项目结构:

/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 只定义了一个带有一些初始化的空类:

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" 它不起作用。

我认为问题是由继承引起的,并调用父 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 解释器创建这些类。并且导入到 tumblr.bot.Bot() 正在工作

我的想法快用完了。

【问题讨论】:

    标签: python windows inheritance scripting


    【解决方案1】:

    由于您的文件输出不起作用,因此 python 解释器可能根本没有启动。在 Windows 资源管理器中右键单击该文件,找到“打开方式”的位置,然后按“更改”按钮,它看起来不正确。

    通过在“开始”中键入 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 没有这个限制。

    【讨论】:

    • 通过windows扩展设置的解释器是我的python27解释器>_
    • 是的,有同样的问题,这让我找到了解决方案。事实证明,我安装了 2 个不同版本的 Python。正如预期的那样,在终端中使用 Python 命令运行脚本是在 2.7 中运行的。但是,通过单击脚本运行是在 3.x 中运行的,而我在脚本中使用的一些函数在 3.x 中不起作用。因此,在终端中使用“python myscript.py”运行效果很好,但双击脚本却没有。为了让它工作,我右键单击脚本,转到属性 -> “打开方式” -> 导航到 Python 的正确版本并选择它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2017-05-29
    • 2019-10-28
    • 2022-12-03
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多