部署无服务器 Django 应用程序?

use*_*034 1 python django

最初的要求是有一个面向外的应用程序,我们将使用服务器。但是,现在所有代码都已完成,长期愿景也发生了变化......要求是拥有一个没有服务器(物理或远程)的内向应用程序。

将使用该应用程序的团队将是同一网络上的 5 个用户,每个用户都将在他们的桌面上单独安装该应用程序。

我的问题是将这个应用程序作为一个可以轻松安装的包部署到每个人的机器上的最佳方法是什么。不输入python manage.py runserver,应用程序如何始终在每个人的机器上运行?

Cla*_*rds 5

我不得不做同样的事情。我的解决方案是使用 PyInstaller,它将所有包和文件捆绑到一个整洁的分发文件夹中,其中包含一个可执行文件。

首先,查看此链接以获取教程。老实说,仅此一点对我不起作用,但对您却可以。所以我将在下面记录一些需要注意的事情,然后从这里继续,就好像它对你来说完美无缺。

PyInstaller 在您的 manage.py 文件上运行后,它将为您创建三个新对象:一个 dist 文件夹、一个 build 文件夹和一个 myAppName.spec 文件。dist 文件夹中是项目的可执行文件。要将这个项目部署到其他地方,唯一需要的是 dist 文件夹(甚至只是里面的 myAppName 文件夹)。只需将其拉上拉链并寄出即可。

dist 文件夹中的可执行文件并不能通过单击来运行,它仍然需要您输入python manage.py runserver. 为了解决这个问题,我创建了一个可执行文件的快捷方式并修改了它的 target。因此,如果您的项目的路径是C:\path\to\proj,则快捷方式的目标将是C:\path\to\proj runserver。这应该允许您双击快捷方式并运行本地服务器。如果您还想在同一次单击时打开 Web 浏览器,请制作一个批处理文件。如果您不喜欢打开控制台,请尝试 TrayIt

如果您想在您的项目上重新运行 PyInstaller,请删除那些 dist 并构建文件夹以提高速度,但保留该 .SPEC 文件并在其上运行 pyinstaller。如果您关心,它可以帮助您更具体地了解该过程。

需要注意的问题:

如上所述,当我在 Django 应用程序上运行 PyInstaller 时,我遇到了一些问题需要解决。

  • 每当我运行新的可执行文件时,控制台都会抱怨“找不到模块”错误。这是我对这些错误的解决方案。我最终不得不添加比我的答案显示的更多的隐藏导入。问你应接受。
  • PyInstaller 应该打包所有模板(html 文件),但它没有。我不得不手动将所有文件添加到dist\myAppName\django\contrib\admin\templates文件夹中。
  • PyInstaller 还应该获取您使用的所有外部模块,但它没有。要使用丢失的模块,我必须从下载模块的文件夹中获取该模块的文件夹,然后手动将其添加到我的dist/myAppName文件夹中。只是把它粘贴在那里工作得很好。
  • PyInstaller 也应该摆脱未使用的导入,但它没有。我不得不excludes在我的 .SPEC 文件的列表中添加很多模块,这样我的 dist 文件夹就不会很大。

如果您的 PyInstaller 体验比我的好,请告诉我。我认为我的问题可能是孤立的实例。