使用 py2app 将 python 3.6 文件转换为 .app 后,如何在 运行 .app 时停止发生错误?

How to stop error occuring when running .app after converting python 3.6 file to .app using py2app?

我正在使用 py2app 将我的 Python 3.6 文件转换为 .app,但是,每次我转换它时,在尝试 运行 .app 文件时,我都会收到此错误消息:

我相信我的 setup.py 文件设置正确:

from setuptools import setup
setup(
    app=["algorithm.py"],
setup_requires=["py2app"],
)

这是我的主要代码(我正在尝试将其转换为 .app 的代码):

#CENTRALCOAST: 2250-2420
#CENTRALCOAST2: 2250-2267
#NORTHERNBEACHES: 2084-2108
CentralCoast = []
NorthernBeaches = []
OOR = []
Invalid = []
import math
def numLen(num):
  return len(str(abs(num)))

with open('postcodes.txt') as input_file:
    long_list = [line.strip() for line in input_file]
    for i in range(len(long_list)):
        long_list[i] = int(long_list[i])
for each in long_list:
    if 2084 <= each <= 2108: #NorthernBeaches
        NorthernBeaches.extend([each])
for each in long_list:
    if 2250 <= each <= 2267: #CentralCoast
        CentralCoast.extend([each])
for each in long_list:
    if not 2250 <= each <= 2267:
        OOR.extend([each])
#for each in long_list:
#    if numLen(each) != 4:
#        Invalid.extend([each])

Total = len(CentralCoast) + len(OOR) + len(NorthernBeaches) + len(Invalid)

print("Central Coast:", len(CentralCoast), "------", round(len(CentralCoast)/Total,2), "%")
print("")
print("Northern Beaches:", len(NorthernBeaches), "------", round(len(NorthernBeaches)/Total,4), "%")
print("")
print("Out of Range:", len(OOR), "------", round(len(OOR)/Total,2), "%")
print("")
#i = 0
#for i in OOR:
#  print(i)
#  i = i + 1
print("Invalid Entry:", len(Invalid), "------", round(len(Invalid)/Total,4), "%")
print("")
print("")
print("Total:", Total)
exit = input("")

我在想这个错误可能与主程序使用外部文本文档有关(postcodes.txt)。是这个问题吗?

我为我的 Tkinter 脚本找到了一个解决方案,它也可能有助于解决您的问题:

Mac .app 文件在 .app 文件中隐藏了自己的文件系统,即 MyApplication.app/Contents/MacOS/MyApplication。当您尝试使用 "open()" 打开文件时,就像您使用 postcodes.txt 和我在脚本中所做的那样,应用程序正在查找内部文件系统 ("MyApplication.app/Contents/MacOS/"),这似乎被 MacOSX 禁止,因为即使使用 "try/except" 我也会收到该错误消息。

解决方案是将整个路径添加到文件中,即

test = open("/Users/yourusername/Documents/test.txt", "r")

如果您想在其他 Mac 上使用该应用程序并且想将文件放在桌面或文档文件夹中,请确保您没有输入用户名:

import os
file = open(os.path.expanduser("~/Documents/test.txt"), "r")