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'],
)
任何帮助表示赞赏。
解决方案
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'])
]
希望这可以帮助。
推荐阅读
- julia - Julia shell 命令如何设置环境变量?
- python - 硒中的元素迭代
- ios - 设备锁定后如何在 iOS 应用中录制视频?
- android - 使用 Jenkins 构建 Gradle 项目时出错
- r - 基于R中一个字符串列的多个条件创建一个新列
- rust - 如何为将成为闭包参数的关联类型指定生命周期?
- python - 从包含虚拟环境的 python 代码构建 RPM
- amazon-web-services - 如何在 Kubernetes 动态配置的 EBS 卷上添加自定义标签
- python - 'TypeError: Invalid shape (10000, 28, 28) for image data' in tensor flow Fashion MNIST image prediction
- c# - 将 Windows 打印机驱动程序与“本机”打印机条形码渲染相结合?