【问题标题】:Python manage.py ImportError: No module named djangoPython manage.py ImportError:没有名为 django 的模块
【发布时间】:2017-07-01 11:36:09
【问题描述】:

我似乎无法让我的 manage.py 脚本识别 django 模块。 pip install req/dev.txt 将我希望它安装到我的 python 虚拟环境中的所有模块(存储在 .venv 中)。

我认为我已经将其范围缩小到我的 $PYTHON_PATH 或我的 pip 需求文件的问题。我遍历了 sys.path,发现其中一个值指向 .venv 中的一个文件夹,我可以确认它包含 django 模块。

不幸的是,我不知所措。我在 Stack Overflow 上搜索了十几个相关问题,但还没有找到可行的解决方案。有没有人有任何线索可以为我指明正确的方向?

错误信息:

$ python manage.py syncdb

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/nathan/www/myapp/.venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/nathan/www/myapp/.venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Users/nathan/www/myapp/.venv/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/nathan/www/myapp/.venv/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/Users/nathan/www/myapp/.venv/lib/python2.7/site-packages/django/apps/config.py", line 119, in create
    import_module(entry)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named django

reqs/dev.txt 的内容

-r common.txt
django-debug-toolbar==1.3.2

reqs/common.txt 的内容

django==1.8
Fabric==1.10.2
ShopifyAPI>=2.1.5
Sphinx==1.3.1
celery>=3.1.20
django-compressor>=1.5
django-toolbelt>=0.0.1
jdcal>=1.0
kombu>=3.0.35
openpyxl==2.2.5
python-dateutil>=2.4.2
psycopg2>=2.5
requests==2.7.0
whitenoise==2.0
shippo==1.4.0

manage.py 的内容:

#!/usr/bin/env python
import os
import sys    

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings.dev")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

【问题讨论】:

  • 您应该为您的开发创建一个 virtualenv,这样做(并使用它)应该可以解决您的问题
  • 谢谢 - 虽然我确实有一个 venv 正在运行,但我意识到我应该验证它正在被使用(它是),这让我意识到我应该深入到堆栈跟踪并开始打印要调试的东西,哪些输入东西正在破坏。这让我找到了我的解决方案,写在下面!谢谢

标签: python django


【解决方案1】:

经过一夜的休息,问题解决了。

问题是我的 INSTALLED_APPS 引用了 kombu.transport.django,这似乎是我们为 celery 添加的完全不必要的依赖项。更多信息请点击此处:Celery, kombu and django - import error

我是如何发现解决方案的,以防调试技术对其他人有所帮助:

我从深入研究堆栈跟踪开始。我(临时)修改了.venv/ 中的文件,为输入变量添加打印语句,直到在.venv/lib/python2.7/site-packages/django/apps/registry.py 中的populate() 中找到我的第一个线索

打印populate() 中的每个条目让我看到正在破坏的包是kombu.transport.django,而不是django 模块。从我的 INSTALLED_APPS 中删除该条目解决了这个问题。

为了清理,我通过删除我的打印语句恢复了.venv/ 中的文件,然后我关闭并运行了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-16
    • 2013-05-04
    • 2015-08-04
    • 2012-10-21
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多