在组织 python 模块时,我的 Mac OS X 系统是一团糟。我的硬盘上到处都有包裹,没有特定的系统来组织它们。
你如何保持一切可控?
我的建议:
paster create
(参见http://pythonpaste.org)来创建您的初始目录布局。除了 PEP8 和 easy_install,您还应该查看 virtualenv。Virtualenv 允许您拥有多个不同的 python 库树。在工作中,我们使用带有引导环境的 virtualenv 来快速建立一个开发/生产环境,我们都在同步 wrt 库版本等。我们通常协调库升级。
有几个 Python 组件系列。
Python 附带的东西。这会照顾好自己。
您使用 easy_install 获得的东西。这也照顾好自己。
您必须通过其他方式获得的软件包,无论是作为 TARballs 还是 SVN 结帐。创建一个Components
文件夹。首先将下载或 SVN 放在那里。每一次。从那里安装。
您编写的可重复使用的包。我在该Projects
文件夹中有一个包含每个项目的文件夹。如果该项目是一个高度可重用的东西,它有一个setup.py
,我实际上运行安装就像我下载它一样。我没有很多,但有一些。其中一些可能会成为开源项目。
您编写的最终应用程序。我在Projects
每个顶级应用程序中都有一个文件夹。这些通常是大的、杂乱无章的东西(比如 Django 站点)并且没有setup.py
. 为什么?它们通常非常复杂,只需管理几个服务器安装,并且每个服务器安装都是独一无二的。这些通常依靠PYTHONPATH
来识别它们的部件。
注意共同的主题。它们要么是您下载的组件,要么是您正在处理的项目。
此外,我将其与客户分开(在一定程度上)。我有一个客户文件夹的主目录,每个文件夹都有项目,每个项目都有销售和交付。并非所有项目都有销售和交付。
也许PEP8和easy_install可以帮助你?
我将我的包的所有源代码保存在 ~/Packages/ 中,然后在它们上使用“python2.5 setup.py install”进行标准安装。这扔进(对我来说) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/ 。对于我自己的软件的开发,我设置了别名来在trunk/branches/1.0等之间切换,方法是预先放置到PYTHONPATH上。(我必须在每个目录中运行“setup.py build_ext --inplace”才能正确导入。)
值得注意的是,Python2.6 有一个per-user site-packages 目录,您可能会发现它更方便。
“模块”Python 文档页面是组织代码的有用指南,特别是“包”部分
我的建议是尝试将所有内容放入您的站点包目录中,除非您有充分的理由不这样做。而且我尽量避免使用easy_install,因为我发现它往往会用鸡蛋位置破坏我的sys.path,但这只是我。有些人觉得它很有用。
如果您有很多程序使用可能相互冲突的不同库,您可能还想查看virtualenv。
刚刚从另一个 StackOverflow 问题中遇到了这个网站:http: //infinitemonkeycorps.net/docs/pph/这不仅仅涉及模块放置,而且一旦你放置它,你就可以编写如何轻松处理文档、测试和分发。