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

2024-05-14 00:55:42 发布

您现在位置:Python中文网/ 问答频道 /正文

最初的需求是有一个面向外部的应用程序,我们将使用一个服务器。然而,现在所有的代码都完成了,长远的愿景已经改变。。。要求是有一个面向内部的应用程序,没有服务器(物理或远程)。在

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

我的问题是,将这个应用程序作为一个包部署到每个人的机器上,他们可以轻松地自行安装。如果不输入python,应用程序如何总是在每个人的机器上运行管理.py运行服务器?在


Tags: 代码用户py网络服务器机器应用程序远程
2条回答

您可以使用py2exefor Windows或py2app将python应用程序转换为可执行文件,以启动Django应用程序。在

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

首先,查看this link以获得教程。老实说,光是这一点对我来说并不管用,但对你来说却是可行的。因此,我将在下面记录一些需要注意的事项,并从这里继续,好像它对您来说是完美的。在

PyInstaller在您的管理.py文件,它将为您创建三个新对象:dist文件夹、build文件夹和myAppName.spec文件。dist文件夹中是项目的可执行文件。要将这个项目部署到其他地方,只需要dist文件夹(甚至是其中的myAppName文件夹)。只要把它拉上拉链就可以了。在

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

如果你想在你的项目上重新运行PyInstaller,为了速度,去掉那些dist并构建文件夹,但是保留这个.SPEC文件并在上面运行PyInstaller。如果你在乎的话,它可以帮助你更具体地了解这个过程。在

需要注意的问题:

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

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

如果你的PyInstaller体验比我的好,请告诉我。我想我的问题可能只是个别的例子。在

相关问题 更多 >