用py2exe打包后的可执行程序一闪而过?

getline 2011-01-05 11:31:48
现在想试下让python写好的脚本能在别人的机器上直接运行。。下载了安装了py2exe。。执行后发现在dist目录下双击exe文件时一闪而过。why?

mysetup.py

# mysetup.py
from distutils.core import setup
import py2exe

setup(console=["helloworld.py"])


helloworld.py

#/usr/bin/python
import os

print 'hello'
os.system('pause')



python version:2.6
py2exe version:py2exe-0.6.9.win32-py2.6
os: xp 32bit
...全文
544 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
getline 2011-01-06
  • 打赏
  • 举报
回复
非常感谢楼上的各位!
shyokou 2011-01-05
  • 打赏
  • 举报
回复
您老在资源管理器里 "双击" 本该是命令行的脚本时, 貌似若冇事先建立控制台对象, 就冇控制台的输入输出啦, 要不加个 sleep 试试 ...

[Quote=引用楼主 getline 的回复:]
现在想试下让python写好的脚本能在别人的机器上直接运行。。下载了安装了py2exe。。执行后发现在dist目录下双击exe文件时一闪而过。why?

mysetup.py

Python code
# mysetup.py
from distutils.core import setup
import py2exe

setup(console=["helloworld.py……
[/Quote]
getline 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sunming2008 的回复:]

我的Python是2.4 试了你的程序没问题
你在cmd下执行exe呢?
[/Quote]

cmd下执行exe可以打印出来
看着奢扣 2011-01-05
  • 打赏
  • 举报
回复
我的Python是2.4 试了你的程序没问题
你在cmd下执行exe呢?
上帝无言 2011-01-05
  • 打赏
  • 举报
回复
不对 是 在messagebox.py 这里加
import sip
import decimal
上帝无言 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 getline 的回复:]
再发一个关于GUI的。。

mysetup.py


Python code
# mysetup.py
from distutils.core import setup
import py2exe

setup(windows=["messagebox.py"])



Python code
#!/usr/bin/python

# messagebox.py
……
[/Quote]

在你的mysetup.py里加上这两句
import sip
import decimal
看着奢扣 2011-01-05
  • 打赏
  • 举报
回复
查了下笔记 不见得对....
from distutils.core import setup
import py2exe
setup(windows=["messagebox.py"], options={"py2exe":{"includes":["sip"]}})
看着奢扣 2011-01-05
  • 打赏
  • 举报
回复
这个错好像见过,生成exe时这样,
python setup.py py2exe --includes sip

还不行的话是改一下setup.py, 加一个options=什么什么include sip是什么的 具体俺忘了...
getline 2011-01-05
  • 打赏
  • 举报
回复
再发一个关于GUI的。。

mysetup.py

# mysetup.py
from distutils.core import setup
import py2exe

setup(windows=["messagebox.py"])


#!/usr/bin/python

# messagebox.py

import sys
from PyQt4 import QtGui


class MessageBox(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('message box')


def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()

app = QtGui.QApplication(sys.argv)
qb = MessageBox()
qb.show()
sys.exit(app.exec_())


在生成的dist目录下双击messegebox.exe生成的错误日志为
Traceback (most recent call last):
File "messagebox.py", line 6, in <module>
File "PyQt4\QtGui.pyc", line 12, in <module>
File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: No module named sip

是不是哪里要搞啥绝对路径的?
上帝无言 2011-01-05
  • 打赏
  • 举报
回复
第一次用
import os

print 'hello'
os.system('pause')
编译不成功
然后改用
print 'hello'
raw_input()
就可以了

后来改用第一次的代码发现也可以了。
疑点是第一次编译的时候出错了。不是代码本身
上帝无言 2011-01-05
  • 打赏
  • 举报
回复

print 'hello'
raw_input()

改成这样试试
看着奢扣 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 getline 的回复:]

引用 1 楼 sunming2008 的回复:

我的Python是2.4 试了你的程序没问题
你在cmd下执行exe呢?


cmd下执行exe可以打印出来
[/Quote]

双击了生成的exe 在我这里可以打印出来 然后是按任意键退出,而不是闪过去了
这个应该在哪能设置吧

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧