0

我在生产服务器上设置 Django 并且有这个奇怪的错误(在下图中)正如你所见,pythonpath 似乎没问题(第一行是我的项目文件夹),我的项目/项目文件夹中肯定有模块 urls.py,我在那里有初始化文件和我的 ROOT_URLCONF = 'project.urls'(我也尝试过没有项目名称,但它也没有帮助)。所以,这很奇怪为什么它找不到它:(我不得不说我试图在服务器上创建一个新项目,然后它似乎没问题,但是这个项目是从本地服务器复制的,它的行为就像这个。

错误的打印屏幕:

错误

4

2 回答 2

0

实际上,您的项目看起来并不在您的路径中。回溯只显示 Django 包。

于 2014-08-03T18:37:30.290 回答
0

我能想到的唯一问题是包创建的过程。您遵循什么流程来部署您的 Django 应用程序?

如果您已经在本地机器或 CI 服务器上编译了 Django 应用程序,然后部署了已编译的包,那么您将遇到导入模块问题,因为 pyc 文件将包含本地机器或 CI 服务器的硬编码路径。要在编译 python 文件之前修复它,您应该在本地/CI 服务器上创建相同的层次结构,然后编译和部署。

希望这可以帮助。

[编辑]

我同意 pyc 文件中的硬编码路径是 PITA,一旦我们发现它,我们就一直在生产环境中这样做。

但是我不同意您在服务器上重新生成 pyc 文件,因为随着您的应用程序将增长并且您转向大型应用程序,它会变得非常慢。

您不必保留开发环境目录以遵循生产目录结构。相反,您可以在开发机器上拥有任何目录路径并创建一个单独的 bash 脚本,该脚本将通过创建您在生产中遵循的目录结构为您创建一个包。Bash 脚本将具有以下逻辑

  • 创建类似于生产的目录结构
  • 从源代码管理中检查代码
  • 使用编译代码python -m compileall .
  • 创建一个压缩包

您可以在生产服务器上解压缩此 tarball,您的应用程序应该可以正常运行。

有关在 python 中创建包和最佳实践的更多信息,请查看此视频

于 2014-08-03T18:42:04.103 回答