python-3.x - 无法在不同的目录中加载腌制的自定义类,这是怎么回事?如何导入所需的类?
问题描述
我正在尝试在不同的目录中加载一个腌制的自定义类,但我遇到了两个错误。
文件结构如下
/project
|
|--/data
|
|--/src
|
| |--__init__.py
|
| |--/calculate
| |--__init__.py
| |--run_calc.py
| |--calc_class.py
|
| |--/plot
| |--__init__.py
| |--run_plotter
在run_calc.py中,我通过导入自定义类来计算并腌制它,如下所示
import pickle
from cust_class import animal
instance_animal = animal(specie, age)
with open('../../data/picked_class.pickle', 'wb') as f:
pickle.dump(instance_animal, f)
cust_class.py是这样的
class animal:
def__init__(self, specie, age)
self.specie = specie
self.age = age
现在,当我尝试将 run_plotter 中的泡菜加载到如上所示的不同目录中时,出现以下错误。
run_plotter.py
with open('../../data/pickled_class.pickle', 'rb') as f:
loaded = pickle.load(f)
控制台输出
$python run_plotter.py
ImportError: No module named cust_class
现在,如果我将 calc_class.py 复制并粘贴到 run_plotter.py 旁边的 /plot 目录中,pickle.load 就可以工作了。但是,如果我尝试在 run_plotter.py 中导入calc_class.py,如下所示
from ..parser import bsig_class
给我错误
$python run_plotter.py
ValueError: attempted relative import beyond top-level package
两个问题是,pickle 是否需要导入一个类才能将类加载到不同的目录中?如何导入此类,以便可以将泡菜文件加载到不同的目录中?
解决方案
推荐阅读
- html - 使用MechanicalSoup成功登录一次后,网站再次返回登录页面?
- python - “name.qrc”已导入但我的应用程序中没有背景
- windows - 如何注册列处理程序 windows 10
- c# - 玩家不能再攻击了?(aRPG - 团结)
- c# - 为什么我不能将月份添加到 OffsetDateTime?
- c++ - 如何检测越界未定义行为?
- phpstorm - PhpStorm,有没有办法为类的所有方法添加断点?
- javascript - 我如何只允许从日期选择器中选择从今天开始最多一年的时间?
- python - 如何将变量值插入 JSON 字符串以与 PDAL 一起使用
- excel - 在excel中查找匹配通配符的索引