无法在MacOS上构建独立的可执行文件

问题描述 投票:0回答:2

我想用MacOS上的脚本制作一个独立的可执行文件(10.14)。

该脚本是my_app.py并具有以下内容:

#!/usr/bin/env python

import os.path
import csv
import pandas as pd

##1 open the file
f=open("path/to/original_file.txt", "r")

filedata = f.read()
##1

##1.1 replace the desired characters
filedata = filedata.replace("\\", ",")
filedata = filedata.replace("*", "")

with open("path/to/new_file.txt", 'w') as file:
  file.write(filedata)
##1.1

和以下setup.py文件:

from setuptools import setup

APP = ["my_app.py"]
DATA_FILES = []
OPTIONS = {
    "argv_emulation": True,
    "packages": ["certifi"],
}
setup(
    app = APP,
    data_files = DATA_FILES,
    options = {"py2app": OPTIONS},
    setup_requires = ["py2app"]

)

按照之前的qazxsw poi中的步骤,我在qazxsw poi中按顺序输入以下命令:

SO questions with answer

但是,当我双击Terminal(刚刚创建并位于pip install virtualenv virtualenv venv --system-site-packages source venv/bin/activate pip3.7 install -U py2app cd /path/to/my_app.py python setup.py py2app -A )时,我在弹出窗口中收到以下错误消息

my_app.app

我究竟做错了什么?是否与我的应用程序中没有GUI框架(如PyQT或Tkinter)这一事实有关?

python-3.x macos-mojave py2app python-standalone
2个回答
0
投票

雾可能你需要包含某种类型的运行时库,但另一种选择是创建一个脚本来运行你的应用程序然后修复,这样你就可以通过双击它从Finder启动你的脚本,请参阅/Users/mymac/Documents/applications/myapp/dist了解一些替代方法它。

链接问题中提到的最简单的方法是给脚本扩展enter image description here然后你不需要做任何其他事情。

使用脚本的优点是它在终端(在shell中)执行,因此您应该自动拥有所有库等。


0
投票

我终于可以建立一个独立的

  • 围绕PyQt框架包装应用程序
  • 使用this question来构建应用程序

my_app.py应该如下所示:

.command

然后你cd cdzxswpoi所在的目录。然后你运行

PyInstaller

这将创建几个目录:import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget from PyQt5.QtCore import QSize class HelloWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.setMinimumSize(QSize(640, 480)) self.setWindowTitle("Hello world") centralWidget = QWidget(self) self.setCentralWidget(centralWidget) gridLayout = QGridLayout(self) centralWidget.setLayout(gridLayout) title = QLabel("Hello World from PyQt", self) title.setAlignment(QtCore.Qt.AlignCenter) gridLayout.addWidget(title, 0, 0) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) mainWin = HelloWindow() mainWin.show() sys.exit( app.exec_() ) my_app.pyPyInstaller my_app.py 。在__pycache__里面有另一个名为build的目录。在这个目录中会有一个名为dist的可执行文件(或者引用原始问题,在路径dist内)==>双击它并且你的应用程序正在运行!

© www.soinside.com 2019 - 2024. All rights reserved.