如何将python模块和数据存储在目录中,并使用数据访问权限导入该模块 设置

如何将python模块和数据存储在目录中,并使用数据访问权限导入该模块 设置,python,module,package,Python,Module,Package,我有以下结构(使用项目根目录中的树打印): 我希望能够从项目根目录打开ipython会话,并执行以下操作: import stuff.mod 但它目前不起作用 文件内容 这些文件包含以下内容: stuff\u data.py paper={“type_0”:“lined”,“type_1”:“plain”} mod.py 来自stuff\u数据导入纸张 def(): “打印一些东西。。。 """ 印刷品(纸张) 当我尝试以下操作时(从项目根目录) import stuff.mod 我得到

我有以下结构(使用项目根目录中的
树打印):

我希望能够从项目根目录打开ipython会话,并执行以下操作:

import stuff.mod
但它目前不起作用

文件内容 这些文件包含以下内容:

stuff\u data.py

paper={“type_0”:“lined”,“type_1”:“plain”}
mod.py

来自stuff\u数据导入纸张
def():
“打印一些东西。。。
"""
印刷品(纸张)
当我尝试以下操作时(从项目根目录)

import stuff.mod
我得到了错误

----> 1 from stuff_data import paper
      2
      3
      4 def f():
      5     """print x + 1

ModuleNotFoundError: No module named 'stuff_data'
我也在想——我应该如何组织事情,以便能够使用
用我上面概述的方式来描述它们。或者-应该做什么。

您的
mod.py
文件的导入应该是相对导入:

from .stuff_data import paper

从项目根目录开始的绝对导入:

from stuff.stuff_data import paper

谢谢,这很有效。这是因为-当我从项目根运行python(或ipython)时,所有执行都是从该位置执行的,因此有必要将
stuff.stuff\u数据
放在导入中?我很感兴趣,如果有任何情况下,人们可能更喜欢使用相对进口超过绝对进口,反之亦然?简言之,如何在使用相对导入或绝对导入之间进行选择?是的,如果使用不带
前缀的导入,它必须始终位于路径中可导入的模块或包中。相对导入与绝对导入实际上只是偏好的问题。我个人更喜欢绝对的,几乎总是为了让大家更加清楚模块的来源。其他人更喜欢相对的模块,因为这样可以在模块之间移动,模块作为一个组更容易相互导入。
from stuff.stuff_data import paper