首页 > 解决方案 > 创建与文件系统交互的 py2app 应用程序

问题描述

我有一个大文件,通过从另一个甚至更大的文件中编译数据来定期更新。我编写了一个脚本,用于导入源数据,对其进行转换以使其与模板兼容,然后将其写入模板。

我的问题是我想将它打包成一个独立的 mac 应用程序供我的一些同事使用(他们不会从终端运行脚本)。当我以别名模式创建应用程序时,一切都很好;但是,当我将它打包成一个适当的可分发文件时,我收到一条错误消息,指出找不到该文件(即源文件)。

有没有办法让这种应用程序与任何给定计算机上的文件系统交互?为了获取我的工作目录,并导航到源数据和清理数据的子目录,我一直在使用:

codedir = os.path.dirname(os.path.realpath(__file__))

在我的 setup.py 文件中,我列出了所有源文件:

from setuptools import setup

APP = ['app.py']
DATA_FILES = ['app_data_1.xlsx',
              'app_data_2.xlsx',
              'app_data_3.xlsx']
...

setup(
     app=APP,
     data_files=DATA_FILES,
     options={'py2app': OPTIONS},
     setup_requires=['py2app'],
)

任何帮助表示赞赏。

标签: python-3.xpy2app

解决方案


os.path.dirname(os.path.realpath(__file__))您可能最终会在应用程序的本地 Python 目录中的某个位置,这可能是./Contents/Resources/lib/python.zip/. 根据我对 py2app 的经验,os.getcwd()指向./Contents/Resources/DATA_FILES 中提供的文件应该位于的目录。

如果您的应用程序需要,您可以通过以下方式将数据文件放在子目录./Contents/Resources/subdir

DATA_FILES = [
        ('subdir', ['module/subdir/app_data_1.xlsx'])
]

希望这可以帮助。


推荐阅读