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