对于这样的项目结构:
/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
如果我doubleclick我的python submodule_foo.py
“脚本”它不起作用。
我觉得问题是由inheritance造成的,并且调用了父init
但由于我只是双击它,我不知道如何正确debugging它。
我试图包括一个:
with open('codes.txt', 'a') as file: file.write("It Works \n")
在if __name__ == "__main__":
语句if __name__ == "__main__":
,不起作用:$
我的PATH
variables(在Windows 10中)包括c:\python34
和c:\python34\scripts
我也有一个PYHOME
envvariables指向c:\python34
我已经尝试了这个解决scheme: 在Windows中双击Python脚本停止运行,但它不适用于我。
我也尝试通过python解释器来创build这些类。 并导入到tumblr.bot.Bot()正在工作
我正在用尽想法。
由于你的文件输出不起作用,所以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会在MS版本的latin-1中打印控制台,任何Unicode字符都会触发编码异常。 stderr
没有这个限制。