【发布时间】:2015-07-07 13:51:07
【问题描述】:
当尝试使用 pickle 加载文件时,我收到 ImportError: No module named application_mgmt。
奇怪的是,相同的文件可以毫无问题地从不同的函数中加载,它们甚至都使用相同的 get_file 方法。同样奇怪的是,我可以从函数中加载任何其他文件。
我已尝试将函数移至不同的类/文件。清除并重新填充保存的文件,但似乎没有任何效果。
保存文件中的对象:
class Application():
def __init__(self,name,focus=False):
self.name = name
self.focus = focus
self.prod_score = 5
self.display_name = name
self.color = "none"
导致错误的函数:
def check_meta_info(self, app_name):
self.get_file("saved_meta_data")
文件处理函数:
def get_file(self, file_name):
path = "back/saved_data/%s" % (file_name)
try:
with open(path,'rb') as saved_file:
saved_list = pickle.load(saved_file)
saved_file.close()
return saved_list
except IOError:
#stuff
日志:
Traceback (most recent call last):
File "<stdin>", line 400, in <module>
File "<stdin>", line 221, in app_meta_info
File "<stdin>", line 313, in check_meta_info
File "<stdin>", line 358, in get_file
ImportError: No module named application_mgmt
shell returned 1
有效但调用相同文件类的函数:
def add_meta_info(self, new_application):
new_meta = Application(new_application) # creates obj
saved_meta_info = self.get_file("saved_meta_data")
for metas in saved_meta_info:
if new_meta.name == metas.name:
return False
saved_meta_info.append(new_meta)
self.save_file(saved_meta_info,"saved_meta_data")
del new_meta
文件结构:
.
├── active_screen.glade
├── active_screen.py
├── back
│ ├── application_mgmt.py
│ ├── application_mgmt.pyc
│ ├── bash
│ │ ├── get_active_window.sh
│ │ ├── prosessScript.sh
│ │ └── test_lock.sh
│ ├── bash_schedular.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── saved_data
│ │ ├── first_time_builder.py
│ │ ├── saved_active_data
│ │ ├── saved_background_data
│ │ ├── saved_ignore_data
│ │ └── saved_meta_data < HIM
【问题讨论】:
标签: python object pickle importerror