【发布时间】:2011-10-29 17:39:00
【问题描述】:
我的情况和this question...中的一个类似,不同的是,
在我们的python/django项目中,我们有一个名为utils的目录,里面保存着基本的功能……
有时,我们需要通过从控制台运行 thm 来测试一些模块,例如
python myproject/some_module.py
一切都很好,直到 python 尝试从 我们的 utils 目录中导入一些东西...
from utils.custom_modules import some_function
ImportError: No module named custom_modules
我检查了我的python路径,我们的项目在列表中,项目文件下的每个文件夹都有__init__.py文件,当我在项目目录中运行ipython时...一切正常, 否则,python 从它自己的 utils 目录导入...
我的同事使用 sama 方法没有任何问题,但它会在我的环境中抛出 ImportError...我们所有人都缺少的问题可能是什么?
更新:我的项目目录和每个子目录都有__init__.py 文件,我可以毫无问题地从我的项目中导入其他模块......当我在与我的procekt不同的文件夹中并且我运行ipython时,这样的导入没有问题...
from someothermodule.submodule imprort blahblahblah
但是,当涉及到导入 utils 时,它会失败...
UPATE 2:导致问题的原因是 django 文件夹下的 utils 目录,它也在 python 路径中...
【问题讨论】:
-
你试过
from .utils.custom_modules import some_function -
ValueError: Attempted relative import in non-package错误... -
通过添加一个空的
__init__.py将你的django 项目变成一个包。如果你想做一个相对导入,你已经把它当成一个包了,把它做成一个包是合适的。 -
项目目录也有一个
__init__.py文件,一个空的...但是据我所知,这对于python 将其视为python 目录来说已经足够了... -
utils目录是否有__init__.py?它也需要是一个子包。模块的每个目录都被用作一个包,需要制作一个。
标签: python django importerror pythonpath