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

标签 python django

<分区>

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

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

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

最佳答案

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

首先看this link一个教程。老实说,仅此一项对我不起作用,但对您却可以。因此,我将在下面记录一些需要注意的事项,并从这里继续,就好像它非常适合您一样。

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

虽然 dist 文件夹中的可执行文件不会通过单击它来运行,它仍然需要您键入 python manage.py runserver。为了解决这个问题,我创建了可执行文件的快捷方式和modified it's target。 .因此,如果您的项目路径是 C:\path\to\proj,则快捷方式的目标将是 C:\path\to\proj runserver。这应该允许您双击快捷方式并运行本地服务器。如果您还想在同一个点击中打开网络浏览器,make a batch file .如果您不喜欢打开控制台,try TrayIt .

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

需要注意的问题:

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

  • 每当我运行新的可执行文件时,控制台都会提示“找不到模块”错误。 Here is my solution对这些错误。我最终不得不添加比我的答案显示更多的隐藏导入。请求,你就会得到。
  • PyInstaller 应该打包所有模板(html 文件),但它没有。我必须手动将所有文件添加到 dist\myAppName\django\contrib\admin\templates 文件夹。
  • PyInstaller 还应该获取您使用的所有外部模块,但它没有。要使用缺少的模块,我必须从下载模块的位置获取模块的文件夹,然后手动将其添加到我的 dist/myAppName 文件夹中。只需将其粘贴到那里就可以了。
  • PyInstaller 也应该删除未使用的导入,但它没有。我必须在我的 .SPEC 文件中的 excludes 列表中添加很多模块,这样我的 dist 文件夹就不会很大。

如果您的 PyInstaller 体验比我的好,请告诉我。我认为我的问题可能是个别情况。

关于python - 部署无服务器 Django 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912925/

相关文章:

python - 将数字 1 添加到集合中没有任何效果

python - 如何使用不均匀子数组作为平铺来平铺一维 numpy 数组?

python - 将 Pickled 数据发送到 Graphite

python - Django:在保存模型时检测一组字段的变化

python - 如何用python解析facebook api返回的字典字符串列表?

python - Django 在 S3 中存储上传的文件

python - 'max area of islands' 算法的 3D 实现期间核心转储

python - 如何跳过 url 中的 Unicode 错误

python - 如何在 Django 模板中打印查询集元素?

python - 在类中声明方法而不是在函数中声明方法有什么优点?