你的描述好奇怪啊。我觉得 Linux 系统和 Windows 系统调用 .py 的方式本质上一样的啊。
运行 .py 文件:
1. 通过该该文件的绝对路径;
2. 如果该文件所在的路径在 path 里面,则可以直接使用文件名;
所以两者没区别吧。
你在 linux 调用没有黑框,那是因为是在 console 里面调用运行的。Windows 如果在 console 里面运行也没有黑框啊(本身 console 就是)。
而至于在 Windows 下双击运行没黑框,将文件后缀改一下就好了。.py > .pyw 。一直都是这么做的吧。自己写的 .pyw 的 gui 如果本地跑而不想打包的话。
---------
"但是在 windows 下面,要绑架 py 的处理器,也就是 python,然后直接
xx.py 会直接弹出一个黑框,估计是在黑框里 调用了命令行了,这个肯定是不符预期的,毕竟如果出错了,什么也不知道."
这个部分是想表达:linux 下运行 .py 脚本有错误的时候,黑框存在,而 windows 下会一闪而过?
如果是这样的话,不是必然的吗?在 Windows 里面先打开 console 再运行 .py 文件,异常的话也能被 catch 到。
------
出于我自己对你表述的部分产生的某种思考的延伸,可能你是想表达:在 Windows 下,双击 .py 文件运行了某个脚本,但是异常就直接一闪而过,无法获得异常原因。不知道这是不是你想表达的问题?
如果这是你想表达的问题之一的话:
一般都是类似与这种形式(脚本类而不是 gui):
```python
def main():
pass
if __name__ == '__main__':
try:
main()
except:
# 异常代码自己写,或可以通过 traceprint 输出详细信息
pass
finally:
# 最后,将黑窗口停住就行了。好像 C 语言也是这么玩的吧。
os.system('pause')
```
全局运行的常用的逻辑如果写成脚本的话,还是通过
setup.py 打包成全局命令。可以获得很大的灵活性,同时也直接适配多个系统。我觉得这样做比较有趣。