cx_freeze 问题与 mac 上的相对路径
Posted
技术标签:
【中文标题】cx_freeze 问题与 mac 上的相对路径【英文标题】:cx_freeze issue with relative path on mac 【发布时间】:2014-05-20 16:26:40 【问题描述】:我在 mac 上遇到了 cx_freeze 相对路径逻辑的问题。我正在使用 python 3.3 和 pyqt5 并构建一个应用程序可移植的 windows - mac。
以下简单脚本只是将图像作为 QPixmap 加载到 QLabel 中。
当从控制台启动时,代码在 windows 和 mac 上都可以正常工作,同时在 windows 和 mac 上构建。 该exe在Windows上运行没有任何问题。 该应用程序 ( MacOSX ) 不加载图像,对于 dmg 也是如此。
我感觉它与相对路径设置有关。这种信念的原因如下: - 如果我尝试加载 .app 图像将不会出现 - 如果我将 testimage.jpeg 复制粘贴到 .app 所在的同一文件夹中,它将加载图像。
我确实在设置中尝试了 include_files,但没有结果。
谁能帮忙?
以下是脚本: 首先是文件image_insert_test.py:
import sys
from PyQt5.QtWidgets import (QApplication, QDialog,
QErrorMessage, QLabel, QWidget, QVBoxLayout )
from PyQt5.QtCore import pyqtSlot, QDir, Qt
from PyQt5 import QtGui
class Window(QDialog):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.fill_box2 = QLabel()
pixmap = QtGui.QPixmap('testimage.jpeg')
self.fill_box2.setPixmap(pixmap.scaled(100,100,Qt.KeepAspectRatio))
# set the layout
layout = QVBoxLayout()
layout.addWidget(self.fill_box2)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = Window()
main.setWindowTitle('test gui')
main.show()
sys.exit(app.exec_())
文件 setup.py:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
options =
'build_exe':
"includes": ["matplotlib.backends.backend_macosx"] ,
"include_files" : ["testimage.jpeg"]
executables = [
Executable('image_insert_test.py', base=base)
]
setup(name='image_insert_test',
version='0.1',
description='Sample image_insert_test script',
options=options,
executables=executables
)
这是cx_freeze bdist_mac http://pastebin.com/77uU4Exr的日志
【问题讨论】:
【参考方案1】:解决方法如下: 而不是
pixmap = QtGui.QPixmap('testimage.jpeg')
地点:
pixmap = QtGui.QPixmap(os.path.join(os.getcwd(),'image_insert_test-0.1.app/Contents/MacOS','testimage.jpeg')
这会从 .app 包中找到图像路径,但必须有一种更优雅的方式来做到这一点。
【讨论】:
以上是关于cx_freeze 问题与 mac 上的相对路径的主要内容,如果未能解决你的问题,请参考以下文章
使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?
如何在使用 cx_Freeze 6.0b1 冻结的 Linux 上修复 python 3.7.3 脚本上的 numpy 依赖项路径?