用于PyBuilder生成基本项目结构的外部插件

pybuilder-archetype-base的Python项目详细描述


PyBuilder原型基插件

这个插件生成一个没有主要依赖关系的基本公共结构。主要的想法是得到一个可以 用于任何类型的Python模块。它稍微修改了PyBuilder结构逻辑,删除了一些使 它更少Java like。在

在下图中,create_archetype_base期间创建的每个目录和文件:

bin
docs
src
└── package_name
    ├── config  # For any kind of configuration files or constants
    |   ├── logger
    |   |   └── logger.yml
    |   ├── __init__.py
    |   ├── constants.py
    |   └── messages.py
    ├── core  # Logic of the project itself
    |   └── __init__.py
    ├── errors  # For every custom exception made
    |   ├── core  # Make as many scripts as packages in core (i.e. processing.py for core.processing)
    |   |   └── __init__.py
    |   └── __init__.py
    ├── utils  # For any kind of util used in the project
    |   ├── logging
    |   |   ├── __init__.py
    |   |   └── handlers.yml  # For custom logging handles (i.e. database logging)
    |   ├── __init__.py
    |   └── helpers.py
    └── __init__.py
tests
├── __init__.py
└── example_test.py
.gitignore
LICENSE # Empty file
README.md
requirements.txt
setup.py

其他PyBuilder插件依赖于PyBuilder_archetype_base,其中包括其他更具体的包。 这些插件包括:

如何使用pybuilder_archetype_base

NOTICE: This plugin only works on Windows due to its dependency with pybuilder_pycharm_workspace PyBuilder plugin. Using this plugin in other OS shall not work properly. Multi-platform support soon.

将插件依赖项添加到build.py(它需要pybuilder_pycharm_workspace 正常工作):

^{pr2}$

{cd3>在函数中配置插件:

@initdefinitialise(project):project.set_property('project_base_path',project_path)project.set_property('pycharm_workspace_project_path',project_path)

这将告诉插件哪个是文件系统中的项目位置。project_base_path属性值应为 总是一样的。它也需要通知pycharm_workspace_project_path,以便获得 pybuilder_pycharm_工作区正在工作。在

启动任务时使用:

(venv)C:\Users\foo\PycharmProjects\bar> pyb create_archetype_base

build.py推荐的文件

此插件不包括build.py文件,因为在执行pyb时应该已经有一个文件了 命令。下面的模板可以和这个插件一起使用。根据需要进行修改。在

frompathlibimportPathfrompybuilder.coreimportuse_plugin,init,Author,beforeuse_plugin('python.core')use_plugin('python.distutils')use_plugin('python.flake8')use_plugin('python.unittest')use_plugin('pypi:pybuilder_pycharm_workspace')use_plugin('pypi:pybuilder_archetype_base')project_path=Path(__file__).resolve().parentname=project_path.nameauthors=[Author("foo",'bar')]license="Apache License, Version 2.0"version='1.0.0'@initdefinitialise(project):project.depends_on_requirements('requirements.txt')project.set_property('dir_source_main_python','src')project.set_property('dir_source_unittest_python','tests')project.set_property('unittest_module_glob','test_*')project.set_property('project_base_path',project_path)project.set_property('pycharm_workspace_project_path',project_path)@init(environments='develop')definitialise_dev(project):project.version=f'{project.version}.dev'project.set_property('flake8_verbose_output',True)@init(environments='production')definitialise_pro(project):project.set_property('flake8_break_build',True)project.set_property('flake8_include_test_sources',True)@before('prepare')defpack_files(project):"""    Includes non-Python files in the build.    :param pybuilder.core.Project project: PyBuilder project instance    :return: None    """package_path=list(Path(project.get_property('dir_source_main_python')).glob('*'))[0]resources_paths=sorted(package_path.glob('**'))[1:]project.package_data.update({package_path.name:[str((path.relative_to(package_path)/'*').as_posix())forpathinresources_paths]})

{{cda4}的例子 插件自述,以满足它的需要。在

属性

插件的下一个属性是提供的默认值

NameTypeDefault ValueDescription
project_base_pathPathNoneProject's path in filesystem (same as ^{} file). Mandatory

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript节点js require()和Rhino Shell load()之间的区别是什么?   While循环中的java If语句   java GXT如何在XTemplate中显示treeobject?   如何将黑白图像加载到二进制文件中?   java ORMLite不知道如何存储班级航班。扫描仪。modelFX。机场航空公司的AirlineFx。使用另一个类或自定义持久器   java组织。阿帕奇。德比。客户是SqlException JSP和JSTL查询   spring如何将clob数据分配给java变量   java从上的表获取数据(Spring)   javaphp使用Exec执行带有用户定义参数的Jar文件   java jsonschema2pojo:引用相同类型的对象   使用原语从Scala调用Java vararg方法   java ClassNotFoundException:ClientBuilder Jersey 2.25.1 Tomcat 9.0   Android(Java)cr_BindingManager:无法调用determinedVisibility()从未看到pid的连接:   Java使用LocalTime类比较没有日期的时间   Java如何初始化对象的参数?