创建与文件系统交互的py2app应用程序

时间:2018-12-28 21:23:57

标签: python-3.x 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'],
)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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

希望这会有所帮助。