【问题标题】:Standard process to locate file locations in Python and pyinstaller?在 Python 和 pyinstaller 中定位文件位置的标准过程?
【发布时间】:2020-07-25 23:36:22
【问题描述】:

在 Python 中查找文件有标准流程吗?如果我有一个我的代码用作参考的数据文件,不同的打包管理器会将这些文件存储在不同的位置。

推荐使用:

import pkg_resources

resource_pkg = pkg_resources.get_distribution('MY_FILE_HERE').location

但是,如果我使用 pyinstaller 之类的东西,将我的代码打包为 .exe,则文件位置不再与 pkg_resources 一起安装,我的代码现在已损坏。是否有所有包管理器都遵循的通用流程?否则我将不得不依赖环境变量? pyinstaller 的方法是什么?

【问题讨论】:

    标签: python package pyinstaller pkg-resources


    【解决方案1】:

    pkg_resources docs 解释该属性:

    位置

    表示分布位置的字符串。对于可导入的发行版,这是将添加到 sys.path 以使其可主动导入的字符串。对于不可导入的发行版,这只是一个文件名、URL 或其他定位发行版的方式。

    您打包的 .exe 是不可导入的,因此听起来您需要另一种方式来访问这些位。

    考虑从 URL 下载到用户主目录中的缓存, 在运行时或最好在安装时。

    pyinstaller docs 建议使用__file__

    path_to_dat = path.join(path.dirname(__file__), 'file.dat')
    

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 2012-09-15
      • 2012-11-22
      • 2017-02-07
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2019-08-19
      相关资源
      最近更新 更多