从Django管理命令导入我的包

时间:2016-09-21 15:00:55

标签: python django setuptools django-management-command

我编写了一个最初是命令行工具的软件包,但我已经决定对于Django它应该从一个管理命令运行。我使用codequal安装了我的外部包(名为pip install --editable),我可以成功使用manage.py shell从该包导入模块:

in[0]: from codequal import something
in[1]: something.some_method()
out[2]: u'result'

这很好用。但是,当我尝试在管理命令中执行相同的操作时,我遇到了错误:

File "/home/path/to/django/project/some_app/management/commands/codequal.py", line 8, in <module>
    from codequal import something
ImportError: cannot import name something

这是为什么?我可以使用管理命令中的其他已安装包。这可能与我的setup.py有关吗?如果需要,我可以发布片段。主要是我想知道这部分是否应该受到指责:

    entry_points={
    'console_scripts': [
        'codequal = codequal.cli:main',
    ],

这是否会阻止从某些地方导入模块?我无法看到它会如何,因为我可以从manage.py shell开始。

1 个答案:

答案 0 :(得分:2)

问题是您的文件(codequal.py)与模块具有相同的名称。你需要改变其中一个。我推荐了应用程序中的文件:

/home/path/to/django/project/some_app/management/commands/codequal.py

/home/path/to/django/project/some_app/management/commands/codequal_utils.py