1

我正在编写一个小型网络应用程序,我想包含下载自身的能力。理想的解决方案是让用户能够“pip install”整个应用程序,但应用程序的用户将能够下载它的一个版本以供自己使用(可能功能减少或没有一些不太重要的依赖项) .

我目前正在使用 Bottle,因为我想让一切都尽可能接近标准库。用户可能使用不同的平台或 Python 版本,这是尽量减少使用额外模块的其他原因。(尽管我假设无论平台如何,都将使用 2.7 或 3.3)。

我目前的想法是使用应用程序__file__或类似的应用程序并自行压缩。它还可以使用 setuptools/distribute 并sdist自行调用。然后,用户可以执行 zip 文件,或使用源代码分发安装应用程序。(理想情况下,我想提供这两个选项)。

该应用程序将包括积极的导入检查以回退到可用模块,Bottle 是唯一的要求(并将包含在下载的文件中)。

谁能想到提供此功能的强大方法?

更新:无法保证该应用程序的用户始终可以访问互联网,因此需要能够从以前安装该应用程序的人那里下载该应用程序的版本。也不能假设有 Python 经验,因此让用户运行python -m myApp.zip以运行他们自己的版本的想法。

更新二:由于 python 体验的水平也无法保证,我希望用户以最简单的方式获得应用程序的大部分工作版本。然后,有经验的用户可以通过安装他们自己选择的附加模块来自由“升级”应用程序。其中绝大多数将是从(CherryPy、Twisted 等)托管应用程序的不同服务器,因此严格来说不会被视为依赖项,而是“很高兴拥有”。

更新三:根据下面的答案,我将研究基于 PyPI/buildout 的解决方案,但仍然对上述方法是否有特定的解决方案感兴趣。

4

1 回答 1

3

只需打包您的应用程序并将其放在 PyPI 上。试图自动打包服务器上运行的代码似乎是过度设计的。然后你可以让人们使用 pip 来安装你的应用程序。在您的应用程序中,提供指向 PyPI 页面的链接。

然后你也可以在 setup.py 中添加依赖,pip 会为你安装。您似乎正在尝试构建自己的打包基础架构,但并非必须这样做。使用现有的东西。

于 2013-02-11T17:20:23.717 回答