我的应用程序的一个模块使用.pyd文件中的函数.有一个选项可以排除dlls(exclude_dlls),但有一个包含它们吗?尽管复制了其余的文件(.py),构建过程似乎并没有复制模块中的.pyd.我还需要包含一个.dll.如何让py2exe包含.pyd和.dll文件?
我正在尝试使用PyQt4在Python脚本的QImage对象中使用JPEG图像.
脚本本身运行良好,图像加载,可以操作和渲染,所有.但是,当我尝试用py2exe"编译"这个脚本时,一切都可以工作但JPEG图像.用PNG等效替换它可以工作,但由于我的程序从网上下载图像,它们不会一直是PNG格式,我不能用另一个库将它们全部转换.
我发现QImage的JPEG图像支持以及其他图像格式是由\ qt\plugins\imageformats目录中的一些DLL提供的(它们被称为qjpeg4.dll和qjpeg4d.dll).我想我需要在我的可执行文件中以某种方式使用它们,但我不知道如何.我试过简单地将它们复制到我的exe目录,没有运气.我已经尝试过,如此处所示,将这些文件作为data_files包含在setup.py脚本中,但没有运气(看起来它所做的就是将这些文件复制到exe的目录中,因此无论如何都不会因为手动复制它们而改变它们).
我确定有一些使用PyQt和JPEG图像的应用程序,他们是如何做到的?这似乎是一项微不足道的任务,但我现在仍然坚持下去.
另外,我希望我的应用程序是跨平台的(为什么我还要用Python编写代码?),我希望在打包OS X或Linux时我不会遇到这样的打包问题(它不是唯一的).我会吗?
我正在使用Py2exe在Windows 7 Pro(64位)上使用Python 2.6(32位)编译CherryPy(3.1)服务器.
此服务器将在没有GUI的情况下运行.
问题:
如果在没有GUI的情况下运行,我是否需要关注为此应用程序添加清单文件?
我需要在我的exe中包含w9xpopen.exe吗?
到目前为止,我的有限测试表明我不需要在我的可执行文件中包含清单文件或w9xpopen.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) 我刚刚完成了一个Python程序的测试,该程序涉及登录到站点并需要设置CSRF cookie.我已经尝试将其打包为exe使用py2exe并出现套接字错误.我尝试时遇到同样的问题PyInstaller.谷歌搜索Errno我发现其他一些人有同样的问题,所以我知道问题是与SLL证书的位置有关.
这是我的site_agent课程,包括日志记录调用.
class site_agent:
self.get_params()
URL = root_url + '/accounts/login/'
# Retrieve the CSRF token first
self.agent = requests.session()
self.agent.get(URL) # retrieves the cookie # This line throws the error
self.csrftoken = self.agent.cookies['csrftoken']
# Set up login data including the CSRF cookie
login_data = {'username': self.username,
'password': self.password,
'csrfmiddlewaretoken' : self.csrftoken}
# Log in
logging.info('Logging in')
response = self.agent.post(URL, data=login_data, headers=hdr)
Run Code Online (Sandbox Code Playgroud)
该错误出现在该self.agent.get(URL)行,Traceback显示:
Traceback (most recent call last):
File "<string>", line 223, …Run Code Online (Sandbox Code Playgroud) 我有这个问题,如果我尝试在我的使用Pyqt/Pyside的python文件上运行py2exe我尝试运行在I:\ Documents\Python\Buttonio_Testio\dist中生成的EXE时会出现以下错误:
I:\Documents\Python\Buttonio_Testio\dist>Package.exe
Traceback (most recent call last):
File "Package.py", line 1, in <module>
File "PySide\__init__.pyc", line 55, in <module>
File "PySide\__init__.pyc", line 11, in _setupQtDirectories
File "PySide\_utils.pyc", line 87, in get_pyside_dir
File "PySide\_utils.pyc", line 83, in _get_win32_case_sensitive_name
File "PySide\_utils.pyc", line 58, in _get_win32_short_name
WindowsError: [Error 3] The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)
from distutils.core import setup
import py2exe
setup(console=['Package.py'])
My program, in Package.py looks like this:
from PySide.QtCore import *
from PySide.QtGui import *
import …Run Code Online (Sandbox Code Playgroud) 我正在开发我的第一个Python项目,我需要使用py2exe进行编译.我写了这个setup.py代码:
from distutils.core import setup
import py2exe
import sys
import os
if len(sys.argv) == 1:
sys.argv.append("py2exe")
setup( options = {"py2exe": {"compressed": 1, "optimize": 2,"dll_excludes": "w9xpopen.exe",'dist_dir': "myproject", "ascii": 0, "bundle_files": 1}},
zipfile = None,
console = [
{
"script": "myapplication.py", ### Main Python script
"icon_resources": [(0, "favicon.ico")] ### Icon to embed into the PE file.
}
],)
os.system('upx -9 dist/*.exe')
os.system("rmdir /s /q build")
os.system("del /q *.pyc")
Run Code Online (Sandbox Code Playgroud)
设置代码正常,但我需要将已编译的应用程序的名称从myapplication更改为project.exe.py2exe的哪些选项会更改输出应用程序的名称?
我成功地创建了我的应用程序的可执行版本(Py2exe,Pyinstaller).当我尝试从.exe运行应用程序时,我在日志文件中收到如下错误:
Traceback (most recent call last):
File "CreateAS.pyw", line 8, in <module>
ImportError: cannot import name Publisher
我真的被这部分困住了.你能救我吗?
谢谢
我正在尝试从使用wxPython和Matplotlib的python脚本生成一个.exe文件,看起来似乎是不可能的.
我正在做的导入(与Matplotlib有关)如下:
from numpy import *
import matplotlib
matplotlib.interactive(True)
matplotlib.use("WXAgg")
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas
from matplotlib.ticker import MultipleLocator
这是我正在尝试使用的setup.py文件:
from distutils.core import setup
import py2exe
import matplotlib
opts = {
'py2exe': {"bundle_files" : 3,
"includes" : [ "matplotlib",
"matplotlib.backends",
"matplotlib.backends.backend_wxagg",
"numpy",
"matplotlib.ticker",
"matplotlib.figure", "_wxagg"],
'excludes': ['_gtkagg', '_tkagg', '_agg2',
'_cairo', '_cocoaagg',
'_fltkagg', '_gtk', '_gtkcairo', ],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll']
}
}
setup(
windows=[{'script':'starHunter.py', 'icon_resources':[(1, 'icon.ico')]}],
data_files=matplotlib.get_py2exe_datafiles(),
options=opts,
zipfile=None
)
Run Code Online (Sandbox Code Playgroud)
在尝试运行.exe文件后,我总是得到"找不到matplotlib数据文件",顺便说一句,这个文件已成功创建.
附加信息:我在Windows XP上使用Python 2.6,Matplotlib 0.99.3,wxPython 2.8.11.0
提前致谢.任何帮助将不胜感激! …
我到处都看.Stackoverflow,各种留言板,py2exe网站,pyinstaller网站......没有任何帮助.包括selenium模块,特别是制作支持firefox的exe,似乎是不可能的.我开始拔头发因为使用py2exe和pyinstaller变得非常头疼.
py2exe和pyinstaller都有一些问题.
我的目标是创建一个单独的exe文件,没有任何额外的目录,以便其他人可以使用我的程序,如果他们没有python /模块.
使用py2exe,如果我这样创建一个setup.py文件
from distutils.core import setup
import py2exe
setup(
name='Ask Alfred',
data_files = [('Drivers', ['Drivers/chromedriver.exe',
'Drivers/webdriver.xpi','Drivers/webdriver_prefs.json'])],
version='1.0',
description='Find emails fast!',
author='Me',
windows=[{'script': 'alphy.py'}],
options={
'py2exe':
{
'skip_archive': False,
'optimize': 2,
}
}
)
Run Code Online (Sandbox Code Playgroud)
它将在dist文件夹和Drivers文件夹中创建一个带有我需要的文件的exe,但是,如果我尝试运行exe它会告诉我它找不到这些文件(因为它在库中查找它们). ZIP文件夹).最重要的是,我的GUI看起来很糟糕(字体现在是灰色而不是黑色,而具有白色背景的图像现在具有灰色背景).
使用pyinstaller,如果我在创建exe时使用"--onefile"标志它根本不起作用/ firefox和chrome都没有启动.
如果我选择不归档/不创建一个文件,我只能获得可行的结果.在这种情况下,pyinstaller提供了一个完全可行的解决方案.
py2exe ×10
python ×8
pyinstaller ×2
pyqt ×2
qt ×2
windows ×2
cherrypy ×1
dll ×1
exe ×1
executable ×1
installation ×1
jpeg ×1
matplotlib ×1
pyd ×1
pyside ×1
qimage ×1
qt4 ×1
selenium ×1
ssl ×1
windows-xp ×1
wxpython ×1