有人能指点我一个py2exe 的好教程吗?我已经阅读了官方教程,但与使用python脚本构建可执行文件时可以使用的所有选项相比,它更加清晰.为了记录,我的python脚本使用Python 2.5.2,wxPython/wxWidgets 2.8和MySQLdb 1.2.2; 所以,如果你有py2exe的具体技巧,那些包将非常感激(是的,我见过Py2EXE和wxPython页面).
我正在尝试将简单的Python脚本转换为Windows可执行文件.我的setup.py脚本是:
from distutils.core import setup
import py2exe
setup(
name = "Simple Script",
options = {
"py2exe": {
"dll_excludes" : ["libmmd.dll","libifcoremd.dll","libiomp5md.dll","libzmq.dll"]
}
},
console=['simple_script.py']
)
Run Code Online (Sandbox Code Playgroud)
我添加了dll_excludes,因为它们中的每一个都导致了失败.现在我遇到了一个我不能简单地排除的失败.这是错误跟踪:
Traceback (most recent call last):
File "setup.py", line 12, in <module>
console=['rules signed.py']
File "C:\Anaconda\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Anaconda\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Anaconda\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 243, in run
self._run()
File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 306, in _run
self.plat_finalize(mf.modules, py_files, extensions, dlls)
File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 1157, …Run Code Online (Sandbox Code Playgroud) 我一直在尝试制作一个可执行文件,而我正在接近.请不要建议我使用PyInstaller - 我已经尝试过这条路线,在这里询问,并且已经订购了门票.它很接近但不太合适.我现在正在尝试py2exe,我也非常接近.在pyinstaller中,我能够创建资源文件(使用包含的文件构建可执行文件 - 然后我可以在临时文件夹中访问这些文件).
我想对py2exe做同样的事情.我有一个可执行文件,但有五个额外的文件夹(地图,mpl-data,data,pics和tcl).我已经看到了这个问题,但似乎无法理解它,也无法让它发挥作用.在我的主py文件中,我正在使用PersistentDict(filepath)哪个是我需要文件路径的地方.
我的问题分为两部分:1.如何将文件(下面的数据文件)打包到可执行文件中.2.如何在我的代码中访问这些文件并返回它们的路径(如字符串),例如/temp/file1.jpg.
这是我的py2exe安装文件的代码 - 注意我有matplotlib,必须在我的可执行文件中正确包含mpl-data.谢谢!
from distutils.core import setup
import py2exe
import shutil
import glob
import matplotlib,six
opts = {'py2exe': { "includes" : ["matplotlib.backends",
"matplotlib.backends.backend_qt4agg",
"matplotlib.figure","numpy",
"six",
"mpl_toolkits.basemap",
"matplotlib.backends.backend_tkagg"],
'excludes': ['_gtkagg', '_tkagg','_agg2','_cairo',
'_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', 'tcl' ],
'dll_excludes': ['libgdk-win32-2.0-0.dll','w9xpopen.exe',
'libgobject-2.0-0.dll'],
'bundle_files': 1,
'dist_dir': "Dist Folder",
'compressed': True,
}
}
data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
(r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
(r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
(r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*')),
(r'mpl-data\data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\data\*.*')),
('data', ['C:\\Users\\Me\\Documents\\Example_Json_File.json']),
('pics', ['C:\\Users\\Me\\Documents\\Example_Icon.ico',
'C:\\Users\\Me\\Documents\\Example_Jpg.jpg',
])]
setup(windows=[{"script" : "MyMainScript.py", …Run Code Online (Sandbox Code Playgroud) 我用pyttsx库编写了一个python应用程序.它的工作没有来自tt.py文件的任何问题.我使用py2exe模块编译了这个tt.py文件.编译后我试图运行.exe文件.然后它显示像给定图像的错误

我的setup.py文件是这样的
from distutils.core import setup
import py2exe, sys, os
#includes =['drivers','drivers.sapi5'] #this tried. but making error
sys.argv.append('py2exe')
setup(
options = {'py2exe': {}},
console=['tt.py'],
)
Run Code Online (Sandbox Code Playgroud)
我是用这个命令编译的
python setup.py py2exe install
Run Code Online (Sandbox Code Playgroud)
我在tt.py中导入以下模块
import pyttsx
import pyttsx.drivers.sapi5
import win32com
from time import sleep
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我正在使用Py2exe创建一个可执行文件作为Windows服务.
当我运行脚本时,我收到此错误:
文件"C:\ TeamCity的\ buildAgent \工作\ 582d895bd5b431ac\winpython\WinPython了32bit-2.7.3.3 \中的python-2.7.3\LIB \站点包\ py2exe\build_exe.py",线路860,在build_executable add_resource(ensure_unicode (exe_path),script_bytes,u"PYTHONSCRIPT",1,True)RuntimeError:EndUpdateResource:访问被拒绝.
这是对py2exe的调用:
setup(
name = NAME,
description = DESCRIPTION,
version = '1.0.133.43',
service = [{'modules':["ServiceLauncher"], 'cmdline':'pywin32'}],
zipfile=None,
options = {
"py2exe":{"packages":"encodings",
"includes":"win32com,win32service,win32serviceutil,win32event",
"excludes":"libiomp5md.dll"
},
},
)
Run Code Online (Sandbox Code Playgroud)
问题只发生在构建机器上,它在我的开发电脑上运行正常.
我试图将完全控制设置为工作文件夹中的每个人,但它不起作用.
任何的想法?
谢谢.
我在我的程序中包含了matplotlib,我搜索了谷歌上的numpy_atlas.dll,我似乎是地球上唯一一个有这个问题的人.
from setuptools import setup
import py2exe
setup(console=['EulerMethod.py'])
Run Code Online (Sandbox Code Playgroud)
C:\(..obmitted..)>python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
......
...obmitted...
......
*** finding dlls needed ***
error: [Errno 2] No such file or directory: 'numpy-atlas.dll'
Run Code Online (Sandbox Code Playgroud) 我尝试使用py2exe打包一个Twisted程序,但是一旦我运行了我构建的exe文件,我就得到了一个"No module named resource"错误.
我发现py2exe说:
以下模块似乎缺失['FCNTL','OpenSSL','email.Generator','email.Iterators','email.Utils','pkg_resources','pywintypes','resource','win32api', 'win32con','win32event','win32file','win32pipe','win32process','win32security']
那么我该如何解决这个问题呢?
谢谢.
我找到了一个解决方案,通过以下方式在library.zip中添加文件:扩展py2exe以将文件复制到zip文件,pkg_resources可以在其中加载它们.
当library.zip不包含exe时,我可以访问我的文件.
我在目录中添加了一个文件:text.txt:library.zip中的foo/media.我使用这段代码:
import pkg_resources
import zipfile
from cStringIO import StringIO
my_data = pkg_resources.resource_string(__name__,"library.zip")
filezip = StringIO(my_data)
zip = zipfile.ZipFile(filezip)
data = zip.read("foo/media/text.txt")
Run Code Online (Sandbox Code Playgroud)
我尝试使用pkg_resources,但我认为我不明白,因为我可以直接打开"library.zip".
我的问题是当library.zip嵌入exe时我该怎么做?
最好的祝福
让 - 米歇尔·
我在PyQt4中有一个小程序,我想将程序编译成Exe.我正在使用py2exe来做到这一点.我可以使用以下代码在Windows标题栏中成功设置图标,但是当我将其编译为exe时,图标会丢失,我会看到默认的Windows应用程序.这是我的计划:
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Icon')
self.setWindowIcon(QtGui.QIcon('c:/python26_/repy26/icons/iqor1.ico'))
app = QtGui.QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
****这是py2exe****的setup.py
from distutils.core import setup
import py2exe
setup(windows=[{"script":"iconqt.py"
,"icon_resources": [(1, "Iqor1.ico")]}]
,options={"py2exe":{"includes":["sip", "PyQt4.QtCore"]}})
Run Code Online (Sandbox Code Playgroud) 我可以dist使用命令行设置py2exe 的最终目录:
python setup.py py2exe -d "my/dist/dir"
Run Code Online (Sandbox Code Playgroud)
但我似乎无法设置用于临时build目录的文件.我已经简要地看了一下源代码,但除非我遗漏了某些内容,否则似乎无法做到这一点.
py2exe ×10
python ×9
matplotlib ×2
python-2.7 ×2
windows ×2
anaconda ×1
executable ×1
numpy ×1
python-3.x ×1
pywin32 ×1
qt ×1
qt4 ×1
resources ×1
twisted ×1
wxpython ×1