我和其他一些开发人员就开源项目进行了一些讨论。我是python新手,但在我看来,网站包是为图书馆而不是终端用户应用程序。这是真的,还是站点包是一个合适的地方来安装一个应用程序,由最终用户运行?站点包是适用于应用程序还是仅适用于库?
回答
一旦你到了你的应用程序,准备分发点,包起来为您最喜爱的分布/在将你的库代码在站点包和可执行脚本的系统路径的方式操作系统。
在此之前(即对所有的开发工作),不做任何上述的:保存自己主要的头痛和使用zc.buildout或virtualenv保持你的代码(如果你喜欢,它的依赖以及)隔离来自系统的其余部分。
最终用户运行的程序通常位于其路径中的某处,模块目录中的大部分代码通常位于站点包中。
许多python程序将在路径中放置一个小脚本,该脚本导入模块并调用“main”方法来运行该程序。这允许程序员进行一些前期检查,并且如果需要找到需要的模块,可能会修改sys.path。这也可以加速大型程序的加载时间,因为只有导入的文件将从字节码运行。
我们这样做。
我们下载的大多数东西都是在网站包中。他们来自pypi
或Source Forge或其他外部来源;他们很容易重建;它们被高度重用;他们变化不大。
必须的东西,我们写的是在其他位置(通常在/opt
,或c:\opt
),并包含在PYTHONPATH
。
有没有很好保持我们的东西从site-packages
的理由。然而,我们的微弱借口是我们的东西变化很大。几乎不断。每当我们认为我们有更好的东西时,要重新安装在网站包装中就有点痛苦。
由于我们正在测试我们的工作目录或SVN检出目录,因此我们的测试环境大量使用PYTHONPATH
。
PYTHONPATH
的开发使用流入生产。我们使用setup.py
进行生产安装,但在/opt
下安装到备用家中,并将PYTHONPATH
设置为包括/opt/ourapp-1.1
。
网站包是为图书馆,当然。
混合的方法可能会工作:您可以将您的应用程序所需的库安装在site-packages中,然后在其他地方安装主模块。
如果您可以将应用程序的一部分转换为库并提供API,那么site-packages是一个不错的选择。这实际上是多少个Python应用程序执行的。
但是,从用户或管理员的角度来看,这实际上并不是问题所在。问题是我们如何管理已安装的东西。安装完成后,我如何升级并卸载它?
我使用Fedora。如果我使用它附带的python,我不喜欢将东西安装到RPM系统以外的站点包。在某些情况下,我已经自己构建了rpm来安装它。
如果我在RPM之外构建自己的python,那么我自然会想用python的机制来管理它。
第三种方法是使用诸如easy_install之类的东西来安装这样的东西,例如作为用户到主目录。
所以
- 允许包装分布。
- 允许选择要使用的python。
- 允许使用python安装的发行版,如果您没有对站点包的权限。
- 允许使用python安装在可以使用站点包的分布之外。
- 1. PhoneGap仅适用于NativeApplications还是适用于远程Web应用程序HTML页面?
- 2. 应用程序仅适用于mdpi(320x480 ...)
- 3. 仅适用于iOS的应用程序
- 4. 仅适用于JSP的应用程序
- 5. 仅适用于本机应用程序还是带本机应用程序的Web应用程序?
- 6. GWT设计师:是否仅适用于桌面应用程序?
- 7. 是MVC仅适用于Web应用程序
- 8. SQL注入只适用于网页,还是它也适用于“正常”程序?
- 9. signalR仅适用于聊天应用程序网站吗?
- 10. 仅适用于HTTPS的空响应,仅适用于Google Chrome
- 11. IBM Worklight 6.0 - 应用程序仅适用于HTTP或HTTPS,不适用于
- 12. Django应用程序的本地化仅适用于forms.py而不适用于models.py
- 13. virtualenv - 无站点包不适用于我
- 14. Windows身份基础仅适用于内部应用程序/站点?
- 15. NSDocument *类仅适用于基于文档的应用程序吗?
- 16. 应用程序不适用于4.0.3,但它适用于2.3.3
- 17. 应用程序适用于android 2.2,但不适用于2.3
- 18. Charles SSL Proxy适用于chrome,但不适用于应用程序
- 19. 适用于浏览器,但不适用于应用程序
- 20. 是不是一个协议?并且它仅适用于网络应用程序?
- 21. 适用于Azure B2C SPA应用程序的npm包适用于Angular 4和Typescript
- 22. xmpp是否适用于聊天室应用程序(不是Messenger)?
- 23. 适用于io绑定应用程序的多线程:好还是坏
- 24. 创建网络推送通知(不适用于android应用程序,但仅适用于网站)?
- 25. RadStyleSheetManager仅适用于Telerik Controls CSS吗?还是可以将它用于合并站点的所有CSS?
- 26. Wix!(bind.AssemblyFullName.fileId)仅适用于GACed程序集?
- 27. 适用于事件驱动站点的CMS适用于:
- 28. Angular 2是否仅适用于NodeJS
- 29. pushViewController仅适用于动画:是的
- 30. RedirectToAction是否仅适用于HttpGet?
听起来像你们真的可以从virtualenv + pip(或zc.buildout)中获益。 – 2009-04-27 12:00:01
我们对out配置没有任何问题 - virtualenv没有增加太多价值。我们使用某种虚拟机(也许VMWare - 别人负责这一点)来托管各种服务器进行测试,质量保证,制作等。在单台机器上使用许多虚拟机似乎比虚拟机简单。 – 2009-04-27 12:31:42