gpt4 book ai didi

python - 访问 Python egg 中的配置文件时出现问题

转载 作者:太空狗 更新时间:2023-10-29 18:27:02 26 4
gpt4 key购买 nike

我有一个具有以下结构的 Python 项目:

package1
class.py
class2.py
...
package2
otherClass.py
otherClass2.py
...
config
dev_settings.ini
prod_settings.ini

我编写了一个 setup.py 文件,将其转换为具有相同文件结构的 egg。 (当我使用 zip 程序检查它时,结构似乎是相同的。)有趣的是,当我从我的 IDE 运行 Python 代码时,它工作正常并且可以访问配置文件;但是当我尝试使用 egg 从不同的 Python 脚本运行它时,它似乎无法在 egg 中找到配置文件。如果我将配置文件放入一个相对于 calling Python 脚本(在 egg 外部)的目录中,它就可以工作——但是这样就违背了拥有一个独立的 egg 的目的,它具有所有程序的功能,可以从任何地方调用。我可以使用任何类/模块并从 egg 运行任何函数,只要它们不使用配置文件...但如果它们这样做,egg 找不到它们,因此函数不起作用。

任何帮助将不胜感激!我们对这里的鸡蛋有点陌生,真的不知道从哪里开始。

最佳答案

问题是,配置文件不再是文件——它们被打包在 egg 中。在文档中找到答案并不容易,但它就在那里。来自setuptools developer's guide :

Typically, existing programs manipulate a package's __file__ attribute in order to find the location of data files. However, this manipulation isn't compatible with PEP 302-based import hooks, including importing from zip files and Python Eggs.

要访问它们,您需要遵循 instructions用于资源管理 API。

在我自己的代码中,我遇到了日志记录配置文件的问题。我像这样成功地使用了 API:

from pkg_resources import resource_stream

_log_config_file = 'logging.conf'
_log_config_location = resource_stream(__name__, _log_config_file)
logging.config.fileConfig(_log_config_location)
_log = logging.getLogger('package.module')

关于python - 访问 Python egg 中的配置文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com