python发行包中似乎包含了非python资源,这是4种方式之一:
setup.py
中的数据_文件(用于在python导入包之外包含资源)setuptools-scm
的东西(我相信它使用版本控制系统来查找资源,而不是manifest.in或其他东西)哪些可以从^{
(我的理解是,importlib.resources
是访问此类资源的首选方式。)如果其中任何一种无法通过importlib.resources
访问,那么如何能够/应该访问此类资源
其他在线用户因为建议使用__file__
查找资源路径而受到责骂,因为已安装的wheel分发版可能存储为zip文件,因此甚至没有正确的资源路径何时将控制盘提取到站点包中,何时保持压缩状态?
所有(1)-(3)项都会将文件放入包中(不知道(4))。 在运行时,
importlib.resources
将能够访问包中的任何数据。 至少使用Python3.9,它可以访问子目录中的资源。 以前,您必须通过添加__init__
使每个子目录成为一个包至于为什么不使用
__file__
:Pythons导入系统有一些奇怪的方法来解析包。例如,如果您使用ZIPAP,它可以在zip文件中查找它们。 您甚至可以为要求从中加载某些资源的包提供自定义加载程序。 谁知道这些资源在哪里?答案:importlib.resources顺便说一句,轮子不是一个竞争者,因为它们是未包装的
相关问题 更多 >
编程相关推荐