【发布时间】:2016-12-27 08:40:40
【问题描述】:
一个对象已被pickle序列化,它将被放置在任何地方(在任何目录下)的模型使用。由于该对象经常使用并且是模型的一部分,因此我希望模型包含 pickle 文件(将文件放在模型的目录下)作为变量。
./data/constant.pyobject = pickle.load(open('object.pkl'))
./data/object.pkl
./code/model01.py
from ..data import constant
# or
# from __future import absolute_import
# from model.data import constant
object = constant.object
./code/model02.pyfrom ..data import constant
object = constant.object
问题显然是python会在./code/下搜索object.pkl(以及任何我在模型外使用模型功能的地方)而不是./data/。
我做得对吗?有更好的解决方案吗?谢谢。 我认为这个问题可能是重复的(这是一个非常常见的问题),但我在这里找不到任何相关的档案。如果是这样,请帮助将我重定向到那里。
【问题讨论】:
-
那为什么不简单地传递
open完整路径呢? -
是的,那是因为,如前所述,模块可以放置在任何地方......所以完整路径不确定。
-
我看不出调用代码可以“猜测”pickle 文件的放置位置。我的建议是将其存储在所有调用代码都知道的预定义位置(甚至可以配置)。
-
但我想如果它可以放在相对路径中会更好(并且在模型的目录下)。腌制文件就像一个字符串或诸如此类的东西。我应该打扰配置吗?如果这是解决问题的唯一方法,好吧,重点。
标签: python-2.7 path pickle python-import