假设我有以下Django项目:
/ # Project dir
/myapp # App dir
/myapp/views.py # views file
/myapp/mymodule.py # a Python module
/myapp/management/commands/mycommand.py # command file
在视图文件中,我只需在mymodule.py
中编写import mymodule
即可导入views.py
。但是,如果我在mycommand.py
中执行相同操作,则会收到错误:ImportError: no module named mymodule
。我知道要导入模型,我可以编写from myapp.models import mymodel
,但mymodule
不是模型,它是一个单独的Python模块。那么,如何将此模块导入我的命令文件?
答案 0 :(得分:2)
这是因为mymodule与你所有其他文件的关系。
如果您输入
from myapp import mymodule
在mycommand.py中,只要您在myapp中正确设置了__init__.py
文件并使用setup.py文件就可以了。 modules文档提供了有关此
答案 1 :(得分:0)
您无法执行此操作意味着您的myapp文件夹不在python' sys.path
中。它在views.py
中工作的原因是因为mymodule.py
位于views.py
的当前目录中
假设您的Project目录(/)位于python的sys.path
:
__init__.py
。此文件可以为空白。import myapp.mymodule
或from myapp import mymodule
同样的逻辑适用于n级深度。如果您有myapp/myappdir1/myappdir2/myfile.py
,则可以import myapp.myappdir1.myappdir2.myfile
假设其中每个文件都包含__init__.py
个文件。
检查https://docs.python.org/2/tutorial/modules.html#the-module-search-path是否有python的模块搜索路径