问题 在python中初始化项目布局?


假设程序员有以下问题:他想要启动一个新的python项目。他需要一个样板文件的基本布局,比如测试目录,源目录,setuptools脚本等。他如何用一个命令创建所有这些东西和布局?

例如,贴纸(如其中一个答案所示,为您提供此服务)

paster create 
Selected and implied templates: PasteScript#basic_package 
A basic setuptools-enabled package 

但是贴纸是工具的一部分,其主要范围不是包的部署。如果我想要一个库的模板和一个应用程序的模板怎么办?如何修改模板以添加我自己的个人资料?


969
2017-11-26 12:02


起源

...并初始化Bazaar存储库;-) - jldupont
我厌倦了每次重新创建包布局和设置并重做很多琐碎的错误。如果有什么东西可以帮助我,我只需填充空间就可以了。 - Stefano Borini
还因为如果我复制我的旧设置,我不能保证以“正确的方式”更新。 - Stefano Borini
是什么阻止你在这里撰写和发布自己的设计以征求意见? - S.Lott
缺乏时间,而且我基本上没有时间。我只是把东西打成一团,称之为包裹。 - Stefano Borini


答案:


你需要一些支持模板的东西来解决这个问题。 python社区中最常用的是pastescript。

easy_install pastescript # A one-time install
paster create

如果您已经确定了包的名称,那么它只是:

paster create mypackage

如果要自定义模板,最简单的方法是创建自己的python包,其中包含所需的自定义模板。将它安装到您的环境中后,您可以根据需要使用此自定义模板。 (这是像pylons这样的框架用来为Web应用程序创建模板的东西)。

paster create -t libtemplate mypackage
paster create -t apptemplate mypackage

有关如何创建模板(包含代码和源文件的混合)的更多详细信息,请查看: http://pythonpaste.org/script/developer.html#templates  你会注意到模板支持继承,所以你可以,例如,只需构建包含的模板,或创建自己的,从头开始的模板。

有关自定义模板的一个很好的示例,您可以在这里查看源代码中的pylons模板: Pylons模板代码

另外,如果你还没有使用它,你应该看看Ian Bicking的virtualenv。它允许您创建临时的“虚拟”环境,允许您安装python包,而无需使用和/或与您可能安装的任何系统范围的软件包冲突。

使用virtualenv和pastescript的标准设置可能如下所示:

mkdir mypackage && cd mypackage
virtualenv --distribute env
source env/bin/activate # 'Turns on / activates' the environment
easy_install pastescript
paster create mypackage

10
2017-11-26 12:07



哎呀,忘记评论不接受格式化。添加到问题。 - Stefano Borini
+!:谢谢。不知何故,我显然错过了贴纸上的备忘录。 - Walt W


我在用着 modern-package-template 布局我的Python项目。

modern-package-template是一个PasteScript模板,使用Python社区中遵循的现代工具和实践为Python项目创建初始布局。因此,您的项目将具有以下特征:

  • 当BDFL自己支持时,使用Distribute而不是setuptools。
  • 构建支持,但您不需要使用它。
  • README.txt和NEWS.txt自动包含在包元数据中作为long_description,从而使它们出现在项目的PyPI页面中。
  • 使用Distribute创建自动脚本(或.exe)

更多信息,请从pypi下载: http://pypi.python.org/pypi/modern-package-template


3
2018-05-18 12:22





您可以制作自己的模板。非常有用,例如内部项目结构标准。

开始制作自己的最佳方法是从现有示例开始,并从中复制/粘贴相关位。建议: 的ZopeSkel 因为它是一个很大的例子。浏览 源代码


1
2017-11-26 13:10





我一直在用 18.11。它是用python编写的,但可以用于任何类型的项目;不只是python。它使用Jinja进行模板化,并具有前后钩子(用python或bash编写),可以轻松创建/管理一个人的虚拟或其他任何你能想到的东西。您可以将自己的模板存储在本地目录中,也可以直接从Internet中提取其他人员并运行它们,而无需先将其存储在本地。它似乎更通用,更易于使用,更有用的恕我直言,然后贴纸(披露:我没有尝试过贴纸)。它也在积极发展。


1
2017-07-08 16:38