我想用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)这一事实有关?
我终于可以建立一个独立的
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.py
和PyInstaller my_app.py
。在__pycache__
里面有另一个名为build
的目录。在这个目录中会有一个名为dist
的可执行文件(或者引用原始问题,在路径dist
内)==>双击它并且你的应用程序正在运行!