我在本地目录中有一个可行的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网站的相同克隆是 失败?
答案 0 :(得分:3)
这就是我解决问题的方法
启动交互式Python提示
python -vvv # -vvv notes to print out import trace information
输入
import xyz
如果这样可行则意味着该模块是有效的Python安装。如果它不能与Django一起使用那么它可能是循环导入和Django初始化代码本身问题的问题。当Django读取settings.py
文件,扫描所有Django应用程序等等时,会做很多幕后魔术,因此循环导入通常就是Python无法加载模块的情况。此外,这可能是Django吞下原始ImportError
异常的情况,并且不会打印嵌套异常,这在初始化Django时实际上是错误的。在这种情况下,手动输入import xyz
应该会显示真正的错误。
如果模块加载失败,那么下一步就是输入
import sys
for p in sys.path: print(p) # print p for Python 2.x
这将显示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安装它们。我希望我没有错过你的观点。