jon*_*sfj 11 python distutils setuptools
我正在做一个独立于平台的PyQt应用程序.我打算使用setuptools写一个setup.py文件.到目前为止,我已经设法检测平台,例如根据平台加载setup()的特定选项,以便在Windows上使用py2exe ...等...
但是,在我的应用程序中,我正在分发一些主题,HTML和图像,我需要在运行时在应用程序中加载这些图像.到目前为止,它们存储在应用程序的themes /目录中.
我一直在阅读有关setuptools和distutils的文档,并想出如果我给setup()data_files选项以及要在"share/MyApp/themes /"中安装的themes /目录中的所有文件,它将安装时一个/ usr /前缀,或平台上的任何sys.prefix.我假设我会找到使用os.path.join(sys.prefix,"share","MyApp","themes")的数据文件,这对我所在的平台来说是对的,对吧?
但是,我希望能够在开发期间访问数据文件,它们位于相对于应用程序源的themes /目录中.我该怎么做呢?是否有一些聪明的方法来确定应用程序是否已安装?或者是一个映射到数据文件的实用程序,不管它们在哪里,目前?
我真的很讨厌添加各种丑陋的黑客,看看是否有相对于源的主题,或者在sys.prefix/share ...等...如何在开发过程中找到数据文件?并在任意平台上安装后?
你可以尝试pkg_resources:
my_data = pkg_resources.resource_string(__name__, fname)
Run Code Online (Sandbox Code Playgroud)
我使用了一个名为data_file的实用工具方法:
def data_file(fname):
"""Return the path to a data file of ours."""
return os.path.join(os.path.split(__file__)[0], fname)
Run Code Online (Sandbox Code Playgroud)
我把它放在我的项目的init .py文件中,然后从我的包中的任何地方调用它来获取相对于包的文件.
Setuptools提供了类似的功能,但这不需要setuptools.
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |