gpt4 book ai didi

python - 如何使用importlib打开包中的文件?

转载 作者:行者123 更新时间:2023-12-03 10:08:39 25 4
gpt4 key购买 nike

我正在尝试将我正在处理的简单网络抓取应用程序的后端放入一个包中,但该应用程序依赖于从 pickle 的 python 对象加载,我无法使用 importlib 将其加载到文件中.以前,当我将所有代码都放在一个文件中并依赖于 open() 时,一切正常,但现在我在导入包时出现错误。出现此错误后,我尝试使用 importlib 加载文件,但无法使其工作。
我正在按照来自类似问题的答案中的步骤操作:How to read a (static) file from inside a Python package? .
我的包中的文件结构是:

mypackage\
__init__.py
parse.py
search.py
categories\
categories.pickle
generate_categories_if_corrupted.py
的内容初始化 .py:
from %mymodule% import search
发生错误的代码:
import importlib.resources as resources
from pickle import load
from . import categories

try:
with resources.open_binary(categories, "categories.pickle") as cat:
CATS = load(cat)
except FileNotFoundError:
raise FileNotFoundError("")
错误:
Traceback (most recent call last):
File "%mypackage%\parse.py", line 15, in <module>
with resources.open_binary(categories, "categories.pickle") as cat:
File "C:\Users\%me%\AppData\Local\Programs\Python\Python38\lib\importlib\resources.py", line 92, in open_binary
_check_location(package)
File "C:\Users\%me%\AppData\Local\Programs\Python\Python38\lib\importlib\resources.py", line 82, in _check_location
raise FileNotFoundError(f'Package has no location {package!r}')
FileNotFoundError: Package has no location <module '%mypackage%.categories' (namespace)>

During handling of the above exception, another exception occurred:

## just a FileNotFoundError with an error message, as expected.
我该如何解决?这是我第一次尝试将我的代码放入 Python 包中。
预先感谢您的回答。

最佳答案

根据 this answer on a related question (你可能想去投票这个答案),对于 importlib.resources要完成它的工作,必须有一个 __init__.py包中的文件。
所以在你的情况下,我相信应该有一个 mypackage/categories/__init__.py文件(与往常一样,该文件可以留空,但必须存在)。

关于python - 如何使用importlib打开包中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62926517/

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