扩展名改为pyw后无法运行的问题记录

转载 2016年10月01日 01:48:44

转载自:http://blog.csdn.net/chroming/article/details/52045054

py的扩展名改为pyw后在windows下直接双击运行会调用pythonw执行程序,不会打开控制台窗口,适合用来运行GUI界面的Python源码。

但在一次实际使用过程中发现在将扩展名py改成pyw后程序无法正常运行,某些功能不正常。由于没有控制台也看不到有什么错误。改回扩展名后则正常。上网搜索之后找到一个类似问题,http://stackoverflow.com/questions/24835155/pyw-and-pythonw-does-not-run-under-windows-7

问题的回答提供了如下测试办法:

pythonw myApp.py 1>stdout.txt 2>stderr.txt


使用之后发现竟然可以正常运行了。同时页面中提供了如下解决办法:

import sys, os
if sys.executable.endswith("pythonw.exe"):
  sys.stdout = open(os.devnull, "w");
  sys.stderr = open(os.path.join(os.getenv("TEMP"), "stderr-"+os.path.basename(sys.argv[0])), "w")


在自己的代码中添加了这几句后解决问题。

具体原因回答中也说了:pythonw由于没有控制台窗口,sys.stdinsys.stdoutsys.stderr都不存在,而print()函数是调用sys.stdout实现的,在pythonw执行时如果遇到调用sys.stdout 或者 sys.stderr的情况会出现错误导致程序无法正常运行。这个问题是py2本身设计的问题,在py3中不会出现。

参考资料:

  1. 《.pyw and pythonw does not run under Windows 7》http://stackoverflow.com/questions/24835155/pyw-and-pythonw-does-not-run-under-windows-7
  2. 《pythonw.exe or python.exe?》http://stackoverflow.com/questions/9705982/pythonw-exe-or-python-exe?noredirect=1&lq=1
0

Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择

在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名。下面是几种扩展名的用法。...

Phaser运行阶段性并发任务【在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表】

运行阶段性并发任务,phaser用法,实例: 在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表....

win7_quickchm_无法运行问题

  • 2012年04月11日 19:44
  • 341KB
  • 下载

解决IE里无法运行脚本问题

  • 2009年05月20日 18:38
  • 174KB
  • 下载

MFC之CFileDialog文件保存扩展名问题

void CmapfileDlg::OnBnClickedNew2() {  static char BASED_CODE szFilter[] = "Map Files (*.map)|...

I学霸官方免费教程二(拓展):关于解决新建文件没有扩展名的问题

部分win8系统或Win10 系统   Win7系统和部分win8系统 WinXP可以省略步骤一 步骤一、在这个文件夹下面,按一下键盘上面的“ALT”按键,会显示菜单栏,如...
  • ixueba
  • ixueba
  • 2015年08月09日 17:08
  • 414

ModelSim SE中wlf文件的一些问题(打不开wlf文件,文件根目录下有一大堆没有扩展名的文件)

题目:ModelSim SE中wlf文件的一些问题(打不开wlf文件,文件根目录下有一大堆没有扩展名的文件)   按照博文《ModelSim SE的几个操作:open,load,import,sa...
  • jbb0523
  • jbb0523
  • 2012年07月15日 22:41
  • 5328

IIS7.5 伪静态 脚本映射 配置方法,添加伪静态后没有为扩展名“”注册的生成提供程序。CSS JS 样式丢失问题

这篇文章主要介绍了IIS7.5 伪静态 脚本映射 配置方法,需要的朋友可以参考下 首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,...

由于已明确禁止所请求的页类型,无法对该类型的页提供服务。扩展名“.svc”可能不正确

由于已明确禁止所请求的页类型,无法对该类型的页提供服务。扩展名“.svc”可能不正确   方法一  最近在做Silverlight,Windows Phone应用移植到Windows 8平台...
  • BZ66P
  • BZ66P
  • 2016年11月29日 22:07
  • 1041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扩展名改为pyw后无法运行的问题记录
举报原因:
原因补充:

(最多只允许输入30个字)