将模块导入自定义命令

时间:2014-11-08 00:40:03

标签: python django

假设我有以下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模块。那么,如何将此模块导入我的命令文件?

2 个答案:

答案 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

  1. 在myapp目录中添加文件__init__.py。此文件可以为空白。
  2. 然后您可以import myapp.mymodulefrom myapp import mymodule
  3. 同样的逻辑适用于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的模块搜索路径