【问题标题】:Install static files for Python package安装 Python 包的静态文件
【发布时间】:2011-07-23 11:23:35
【问题描述】:

(原谅我的英语不好)

我正在为我的 Python 应用程序编写 setup.py。

我的应用需要一些静态文件(图片)。我应该将这些文件添加到 setup.py 中的 data_files 数组中,文件将安装在 Linux 的“/usr/xxx”路径中。

那么我的应用程序安装后如何访问这些文件?我认为在我的应用程序中使用绝对路径(如 /usr/share/xxx/xxx.png)不是一个好主意(它不适用于 Windows)。

【问题讨论】:

  • 为什么要将它们安装在模块路径之外?
  • 如何将它们安装在模块的路径中?我不知道。

标签: python


【解决方案1】:

您应该使用sys.prefix 而不是绝对路径:

filename = os.path.join(sys.prefix, "share", "xxx", "xxx.png")

【讨论】:

    【解决方案2】:

    distribute/setuptools 为此目的提供了 pkg_resources(并且将与 python setup.py developpip install -e 安装的软件包一起使用)。

    api 示例::

        import pkg_resources 
        assert pkg_resources.resource_exists('fabric', 'README.txt')
        assert not pkg_resources.resource_isdir('fabric', 'README.txt')
        myfile_path = pkg_resources.resource_filename('fabric', 'README.txt')
        myopen_file = pkg_resources.resource_stream('fabric', 'README.txt')
        myfile_str  = pkg_resources.resource_string('fabric', 'README.txt')
        contents_of_package = pkg_resources.resource_listdir('fabric', '')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多