【问题标题】:Initialize project layout in python?在python中初始化项目布局?
【发布时间】:2009-11-26 12:02:10
【问题描述】:

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

例如,paster(如其中一个答案中所建议的,为您提供此服务)

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

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

【问题讨论】:

  • 我厌倦了每次都重新创建包布局和设置并重做很多琐碎的错误。如果有什么对我有用的东西,而我只是填补空白,那就更好了。
  • 还因为如果我复制我的旧设置,我不能保证以“正确的方式”保持最新。
  • 是什么阻止您在这里为 cmets 编写和发布您自己的设计?
  • 时间不够,而且我基本上没有。我只是把东西拼凑在一起,称之为包裹。
  • 这有什么问题?为 cmets 发布它是完全可以接受的。

标签: python


【解决方案1】:

你需要一些支持模板的东西来实现这一点。 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 Template Code

此外,如果您还没有使用它,您应该看看 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

【讨论】:

    【解决方案2】:

    我正在使用modern-package-template 来布局我的 Python 项目。

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

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

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

    【讨论】:

    • 很遗憾,自 2010 年以来没有更新,包括 python2 脚本
    【解决方案3】:

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

    开始自己制作的最佳方法是从现有示例开始,然后从中复制/粘贴相关部分。建议:ZopeSkel 因为它很大,有很多例子。浏览the source code

    【讨论】:

      【解决方案4】:

      我一直在使用cookiecutter。它是用 python 编写的,但可以用于任何类型的项目;不仅仅是蟒蛇。它使用 Jinja 进行模板化,并具有 pre 和 post 钩子(用 python 或 bash 编写),可以轻松创建/管理一个虚拟环境或您能想到的任何其他东西。您可以将自己的模板存储在本地目录中,也可以直接从 Internet 拉取其他人并运行它们,而无需先将它们存储在本地。恕我直言,它似乎比 paste 更通用、更易于使用和更有用(披露:我没有尝试过 paste)。它也正在积极开发中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-23
        • 2016-09-07
        相关资源
        最近更新 更多