2009-04-24 68 views
5

我和其他一些开发人员就开源项目进行了一些讨论。我是python新手,但在我看来,网站包是为图书馆而不是终端用户应用程序。这是真的,还是站点包是一个合适的地方来安装一个应用程序,由最终用户运行?站点包是适用于应用程序还是仅适用于库?

回答

5

一旦你到了你的应用程序,准备分发点,包起来为您最喜爱的分布/在将你的库代码在站点包和可执行脚本的系统路径的方式操作系统。

在此之前(即对所有的开发工作),不做任何上述的:保存自己主要的头痛和使用zc.buildoutvirtualenv保持你的代码(如果你喜欢,它的依赖以及)隔离来自系统的其余部分。

3

最终用户运行的程序通常位于其路径中的某处,模块目录中的大部分代码通常位于站点包中。

许多python程序将在路径中放置一个小脚本,该脚本导入模块并调用“main”方法来运行该程序。这允许程序员进行一些前期检查,并且如果需要找到需要的模块,可能会修改sys.path。这也可以加速大型程序的加载时间,因为只有导入的文件将从字节码运行。

4

我们这样做。

我们下载的大多数东西都是在网站包中。他们来自pypi或Source Forge或其他外部来源;他们很容易重建;它们被高度重用;他们变化不大。

必须的东西,我们写的是在其他位置(通常在/opt,或c:\opt),并包含在PYTHONPATH

有没有很好保持我们的东西从site-packages的理由。然而,我们的微弱借口是我们的东西变化很大。几乎不断。每当我们认为我们有更好的东西时,要重新安装在网站包装中就有点痛苦。

由于我们正在测试我们的工作目录或SVN检出目录,因此我们的测试环境大量使用PYTHONPATH

PYTHONPATH的开发使用流入生产。我们使用setup.py进行生产安装,但在/opt下安装到备用家中,并将PYTHONPATH设置为包括/opt/ourapp-1.1

+0

听起来像你们真的可以从virtualenv + pip(或zc.buildout)中获益。 – 2009-04-27 12:00:01

+0

我们对out配置没有任何问题 - virtualenv没有增加太多价值。我们使用某种虚拟机(也许VMWare - 别人负责这一点)来托管各种服务器进行测试,质量保证,制作等。在单台机器上使用许多虚拟机似乎比虚拟机简单。 – 2009-04-27 12:31:42

0

网站包是为图书馆,当然。

混合的方法可能会工作:您可以将您的应用程序所需的库安装在site-packages中,然后在其他地方安装主模块。

0

如果您可以将应用程序的一部分转换为库并提供API,那么site-packages是一个不错的选择。这实际上是多少个Python应用程序执行的。

但是,从用户或管理员的角度来看,这实际上并不是问题所在。问题是我们如何管理已安装的东西。安装完成后,我如何升级并卸载它?

我使用Fedora。如果我使用它附带的python,我不喜欢将东西安装到RPM系统以外的站点包。在某些情况下,我已经自己构建了rpm来安装它。

如果我在RPM之外构建自己的python,那么我自然会想用python的机制来管理它。

第三种方法是使用诸如easy_install之类的东西来安装这样的东西,例如作为用户到主目录。

所以

  • 允许包装分布。
  • 允许选择要使用的python。
  • 允许使用python安装的发行版,如果您没有对站点包的权限。
  • 允许使用python安装在可以使用站点包的分布之外。
相关问题