Jef*_*opo 1 python windows scripting inheritance
对于这样的项目结构:
/tumblr
/tumblr
/module_foo
__init__.py
submodule_foo.py
/module_bar
__init__.py
submodule_bar.py
__init__.py
bot.py
Run Code Online (Sandbox Code Playgroud)
我正在做这样的事情:
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()
Run Code Online (Sandbox Code Playgroud)
bot.py 只定义了一个带有一些初始化的空类:
import sys
sys.path.append('C:\\repos\\bot\\tumblr\\tumblr')
class Bot:
def __init__(self):
self.settings = dict()
# ...
Run Code Online (Sandbox Code Playgroud)
如果我从命令行调用这些脚本,它们会起作用:
python C:\path\to\submodule_foo.py
Run Code Online (Sandbox Code Playgroud)
如果我双击我的python submodule_foo.py“脚本”它不起作用。
我认为问题是由继承引起的,并调用了父init
但由于我只是双击它,我不知道如何正确调试它。
我试图包括一个:
with open('codes.txt', 'a') as file:
file.write("It Works \n")
Run Code Online (Sandbox Code Playgroud)
就在if __name__ == "__main__":声明之后并且不起作用:$
我的PATH变量(在 Windows 10 中)包括c:\python34并且c:\python34\scripts
我还有一个PYHOME指向的env 变量c:\python34
我已经尝试过这个解决方案:Python 脚本停止在 Windows 中双击运行但它对我不起作用。
我还尝试通过 python 解释器创建这些类。并且导入到 tumblr.bot.Bot() 工作正常
我的想法快用完了。
由于您的文件输出不起作用,因此可能根本没有启动 python 解释器。在 Windows 资源管理器中右键单击该文件,找到它显示“打开方式”的位置,然后按“更改”按钮,它看起来不正确。
通过键入cmd开始打开 DOS 命令提示符,并尝试在指定和不指定解释器的情况下运行您的脚本。
c:\home>python.exe myscript.py
Run Code Online (Sandbox Code Playgroud)
或者
c:\home>myscript.py
Run Code Online (Sandbox Code Playgroud)
如果 #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...")
Run Code Online (Sandbox Code Playgroud)
stderr强烈推荐使用该频道,因为默认情况下 Python 会在 latin-1 的 MS 版本中打印到控制台,并且任何 Unicode 字符都会触发编码异常。stderr没有这个限制。
| 归档时间: |
|
| 查看次数: |
8067 次 |
| 最近记录: |