小编Lui*_*nti的帖子

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

我正在尝试将我正在处理的简单网络抓取应用程序的后端放入一个包中,但该应用程序依赖于从腌制的 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
Run Code Online (Sandbox Code Playgroud)

init .py的内容:

from %mymodule% import search
Run Code Online (Sandbox Code Playgroud)

发生错误的代码:

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("")
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "%mypackage%\parse.py", line 15, in <module>
    with resources.open_binary(categories, "categories.pickle") as cat: …
Run Code Online (Sandbox Code Playgroud)

python pickle python-importlib

4
推荐指数
1
解决办法
868
查看次数

标签 统计

pickle ×1

python ×1

python-importlib ×1