如何在没有名为xyz"的模块上获得更多诊断输出错误?

时间:2015-04-21 21:54:09

标签: python django

我在本地目录中有一个可行的django项目 当我从本地django服务器运行它时很好,如

python manage.py runserver.py 8000

但是如果我克隆了这个项目所在的本地git存储库 生活(并且是最新的),像这样:

git clone my_django_project my_django_project_clone

我从克隆的目录中尝试上面的相同命令 服务器立即失败

Error: No module named xyz

即使我运行它,服务器也不会产生其他输出 使用-v 3标记。

有没有办法获得有关原因的更多诊断信息 这个(据说)工作的django网站的相同克隆是 失败?

2 个答案:

答案 0 :(得分:3)

这就是我解决问题的方法

  1. 启动交互式Python提示

     python -vvv   # -vvv notes to print out import trace information
    
  2. 输入

     import xyz
    
  3. 如果这样可行则意味着该模块是有效的Python安装。如果它不能与Django一起使用那么它可能是循环导入和Django初始化代码本身问题的问题。当Django读取settings.py文件,扫描所有Django应用程序等等时,会做很多幕后魔术,因此循环导入通常就是Python无法加载模块的情况。此外,这可能是Django吞下原始ImportError异常的情况,并且不会打印嵌套异常,这在初始化Django时实际上是错误的。在这种情况下,手动输入import xyz应该会显示真正的错误。

    1. 如果模块加载失败,那么下一步就是输入

      import sys
      for p in sys.path: print(p)  # print p for Python 2.x
      
    2. 这将显示Python提取模块的所有目录。您的模块可能不在任何这些目录中,因此您需要确保

      A)您将自己的模块附加到Python sys.path列表或正确使用PYTHONPATH环境变量来加载您自己的包。设置路径可能取决于Django版本,Python版本以及Django的运行方式。例如,运行manage.py命令的当前工作目录可能包含也可能不包含。如果模块在当前文件夹中,您可以尝试:

         PYTHONPATH=. python manage.py runserver
      

      B)您正确安装第三方软件包。 The proper way to install third party Python packages正在为您的开发项目使用pip工具和virtualenv隔离的Python环境。如果将Python软件包安装到系统范围的Python安装(在UNIX上为/usr/lib/python),尤其是使用sudo pip,则结果无法保证正常工作。

答案 1 :(得分:0)

您可能需要安装依赖项。常见的是将依赖项存储在requirements.txt中,并在克隆项目时运行“pip install -r requirements.txt”。要将依赖项推送到requirements.txt,请使用“pip freeze> requirements.txt”。因此,如果您的项目使用PIL或六或其他任何将添加到该文件,然后您可以使用单个命令pip安装它们。我希望我没有错过你的观点。