是否可以用Python将动态(带静态文件)Web应用程序打包成单个无其他依赖的包?

2 投票
3 回答
658 浏览
提问于 2025-04-17 06:44

假设你有一个朋友,他知道怎么按照你的指示输入 python run.py(或者直接双击它)。就这样。这个朋友不知道什么是 apache 或 nginx,但他需要一个网络应用来和我以及其他朋友分享电影和音乐。

现在你想打包一些脚本,这些脚本会在 :8080 端口上运行,并提供一个很不错的网络应用。你打算用 cherrypy 来处理多线程,这样如果有10个或更多的朋友同时访问音乐、博客或其他内容时也不会出问题。而这个应用非常简单,可以用 flask 来做。数据库就是一个简单的 sqlite3 文件,没什么复杂的。

这样做可以用 python 吗?不需要使用 apache/nginx 或者配置文件,也不要求使用这个网络应用的人(既是应用的拥有者,也是使用者,而不是说把它放到某个网络主机上用于“生产”使用,这个应用不是为了“生产”,而是供很多人在自己的电脑上使用)是程序员或部署专员。

谢谢。

编辑

我选择了 cherrypy,只用一个 runit.py 来启动 cherrypy 的多线程服务器,并提供静态文件服务。但后来我遇到了日志记录的问题,既有来自多个应用的日志,也有 cherrypy 自身的日志机制,主要是文档太差了。

所以现在,我用 gunicorn 来做。一个网络应用和一个 runit.py,用 gunicorn 和 gevent 来提供服务。这样就可以了……

3 个回答

0

你可以试试 PyInstaller 这个工具。记得使用 CherryPy 3。如果你在用 Flask 0.8 的时候遇到问题,可以尝试用 0.7 版本。

0

假设你能让你的朋友在他们的电脑上安装Python,那你是不是可以把自己的代码和需要的其他文件打包成一个zip文件,就像virtualenv那样,把你项目需要的东西和全局的东西隔离开来呢?

如果你使用内置的开发服务器,他们只需要双击那个Python文件,就能启动网页服务器,简单得很。

0

只要你的用户知道怎么从网上下载东西,并且能输入“python setup.py install”这条命令,我不太明白你还担心什么其他的问题。在Windows系统上,如果你用 python setup.py bdist_wininst 来打包你的代码,事情会变得更简单。你可以查看这个链接了解更多信息:http://docs.python.org/distutils/builtdist.html#creating-windows-installers

撰写回答