我正在构建一个Django应用程序,我在Ubuntu Linux主机上轻松运行(测试:))。我想打包没有源代码的应用程序,并将其分发到另一台生产机器。理想情况下,应用程序可以通过./runapp命令运行,该命令启动运行python / django代码的CherryPy服务器。
我发现了几种方法:
我真的正在寻找nr.2选项,我想要包含我的Django应用程序,因此可以分发它而无需安装或配置其他内容。搜索互联网给我提供了更多的问题而不是答案,而且非常酸的味道,Django包装是一种神秘的艺术,每个人都知道,但没有人说。 :)
我试过Freeze(失败),Cx_freeze(简易安装版本失败,存储库版本工作,但应用程序输出失败)并在dbuilder.py上重做(这应该可以工作但不会工作真的 - 我猜)。如果我理解正确,大多数问题都源于Django导入模块的方式(例子),但我不知道如何解决它。
如果有人能在网上提供有关打包/分发独立Django应用程序的任何指示或良好资源,我将非常高兴。
答案 0 :(得分:7)
我建议您将发行版基于setuptools(一种增强标准Python发行版机制distutils的工具)。
使用setuptools,您应该能够创建包含应用程序的Python egg。 egg的元数据可以包含easy_install
自动安装的依赖项列表(可以包括Django +您使用的任何第三方模块/包)。
setuptools / distutils发行版可以包含将安装到/usr/bin
的脚本,这样就可以包含runapp
脚本。
如果您不熟悉virtualenv,我建议您也看一下。这是一种创建独立Python环境的方法,它对于测试发行版非常有用。
这是一篇博客文章,其中包含有关virtualenv的一些信息,以及关于其他一些有用的知识工具的讨论:Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip
答案 1 :(得分:0)
--noreload选项将停止Django自动检测哪些模块已更改。我不知道是否会解决这个问题,但可能会这样。
另一种选择(并不理想)是通过将其打包为纯文本代码将调用的dll来掩盖您的一些核心功能。