跳转到主要内容

基于buildout的Python项目的SublimeText配置

项目描述

Egg Status Travis Build Status Test Coverage Python Versions Latest Version License

简介

plone.recipe.sublimetext 是为喜爱 ST3 并希望在开发基于 Buildout 的 Python 项目时拥有类似 Python IDE 特性的开发者准备的构建脚本。这个工具将帮助他们根据项目创建适当的路径位置分配的 SublimeText 设置。目前,plone.recipe.sublimetext 提供了对 Anaconda(一个包含所有功能的集成包)、JediSublimelinterSublimelinter-Flake8Sublimelinter-Pylint 的支持设置。可能会有人提出一个一般性的问题,即为什么我们会使用这个工具,我们是否可以轻松创建 ST3 项目设置(我们对 ST3 的配置有更好的了解)?我完全同意你的看法,但如果你想从 AnacondaJedi 的 Python 自动完成功能中受益(基本上我是一个自动完成功能的爱好者),你必须添加 AnacondaJedi 的所有路径设置,如果项目规模很大(想想任何 Plone 驱动的项目),那么手动管理 eggs 链接将变得很困难(除了 Sublimelinter-Pylint 之外,还需要添加到 sys.path 中的路径列表以查找模块)。

安装

安装 plone.recipe.sublimetext 非常简单,只需在 buildout 中创建一个 sublimetext 部分。在使用 plone.recipe.sublimetext 之前,请确保 JediSublimelinterSublimelinter-Flake8 和/或 Sublimelinter-Pylint 插件已经安装在你的 ST3 上。如果你还没有设置 ST3,可以参考 [这里] 的完整说明。Flake8 检查器需要全局可用的 flake8 可执行文件(除非你打算使用本地的 flake8),还建议你安装一些出色的 flake8 插件(flake8-isort、flake8-coding、pep8-naming、flake8-blind-except、flake8-quotes 等,更多可以在 pypi 中找到)。

示例 Buildout

[buildout]
parts += sublimetext

[sublimetext]
recipe = plone.recipe.sublimetext
eggs = ${buildout:eggs}
jedi-enabled = True
sublimelinter-enabled = True
sublimelinter-pylint-enabled = True

可用选项

eggs

必需:是

默认:无

你的项目的 eggs 列表,这些将被添加到 Jedi 和/或 Sublimelinter-PylintAnaconda 的路径位置。

overwrite

必需:否

默认:False

此选项表示是否应首先清除现有设置或仅更新更改。这种情况可能发生,如果你已经手动使用其他配置(这些配置不由 plone.recipe.sublimetext 管理)创建了设置文件,并且希望保留这些设置不变。

python-executable

必需:否

默认:plone.recipe.sublimetext 将找到当前的 Python 可执行文件路径。

当前项目的 Python 可执行文件路径,如果你正在使用虚拟环境,那么应该是该 Python 路径。注意:${home} 和 ${project} 变量应该可以正常工作。

project-name

必需:否

默认:如果您在项目/构建目录的根目录中有一个现有的ST3项目文件(设置文件),则plone.recipe.sublimetext将选择它作为项目名称,而不是项目/构建目录名称将成为项目名称

当您提供项目名称时,不要添加后缀.sublime-project

jedi-enabled

必需:否

默认:False

此选项与启用/禁用Sublime Jedi有关

jedi-use-omelette

必需:否

默认:False

使用omelette作为jedi自动完成和定义跳转的基础。参见collective.recipe.omelette

omelette-location

必需:否

默认:${buildout:directory}/parts/omelette - 默认的omelette位置。

用于与jedi-use-omelette一起使用,但如果omelette安装在自定义位置,则默认设置应该足够。

sublimelinter-enabled

必需:否

默认:False

是否使用Sublimelinter的功能。

sublimelinter-pylint-enabled

必需:否

默认:False

如果您想使用Sublimelinter-Pylint,则此选项将生效;sublimelinter-enabled选项将被尊重,即如果父选项设置为禁用,但您启用此选项,则不会生效。

sublimelinter-pylint-executable

必需:否

默认:''

您可以提供特定于构建out的pylint可执行文件。这是一种非常灵活的方法,可以避免使用全局pylint。例如,相对路径用例:i.) ${buildout:directory}/bin/pylint ii.) $project_path/bin/pylint iii.) ./bin/pylint iv.) ~/path/bin/pylint

sublimelinter-pylint-args

必需:否

默认:''

有关完整详细信息,请参阅下面的sublimelinter-flake8-args部分。

sublimelinter-flake8-enabled

必需:否

默认:False

您是否想使用Sublimelinter-Flake8。与sublimelinter-pylint-enabled父选项一样,将尊重父选项。

sublimelinter-flake8-executable

必需:否

默认:''

特定于项目的Flake8可执行文件路径,这将为您提供使用全局Flake8可执行文件的灵活性,因为每个项目可能都有不同的Python版本。您可以使用构建out或用户的相对目录路径,这对于所有成员的flake8可执行文件的绝对路径可能不同的情况非常方便!例如,相对路径用例:i.) ${buildout:directory}/bin/flake8 ii.) $project_path/bin/flake8 iii.) ./bin/flake8 iv.) ~/path/bin/flake8

sublimelinter-flake8-args

必需:否

默认:''

您可以为特定于项目的flake8可执行文件提供参数(选项)。您必须遵循简单的格式来提供多个参数或选项,多亏了buildout让我们的生活变得更简单。格式{option name}={option value(如果arg是布尔类型,则为可选值)} max-line-length=90,值得注意的是,前缀--不是必需的,您可以通过空格和/或换行符提供多个参数。

  1. sublimelinter-flake8-args = max-line-length=90 –show-source

  2. sublimelinter-flake8-args = max-line-length=90 –show-source

    output-file=path_to_file

anaconda-enabled

必需:否

默认:False

此选项与是否想启用Anaconda,一个全功能的Python IDE包有关!

anaconda-linting-enabled

必需:否

默认:True

如果想要使用其他库进行代码检查(例如sublimelinter),请禁用此选项,否则应该启用。与其他父选项一样,它将尊重父(《span class="docutils literal">anaconda-enabled》)选项。

anaconda-completion-enabled

必需:否

默认:True

Anaconda 使用 Jedi 引擎进行自动补全,但如果您想使用除 Anaconda 提供的以外的 Sublime-Jedi,请将其禁用。

anaconda-pylint-enabled

必需:否

默认:False

默认情况下,Anaconda 会对 PyFlakes、PEP8、PEP257 进行验证。但您可以通过启用此选项使用 Pylint 代替 PyFlakes。

anaconda-validate-imports

必需:否

默认:True

看到任何无效的导入(例如:from fake.foo import bar)总是好事,但如果您不想这样,请禁用此选项。

anaconda-pep8-ignores

必需:否

默认:''

如果您想忽略某些 pep8 清单(例如:N802 是用于 pep8 命名)。每个忽略项应通过 空格 和/或 换行符 分隔。

anaconda-pep257-enabled

必需:否

默认:False

表示您是否想通过 Anaconda 激活 pep257 清单。

anaconda-pep257-ignores

必需:否

默认:''

如果您想忽略某些 pep8 清单(例如:N802 是用于 pep8 命名)。每个忽略项应通过 空格 和/或 换行符 分隔。

ignore-develop

必需:否

默认:False

如果您不想开发鸡蛋,应该进行自动补全。

ignores

必需:否

默认值: “”

如果您想特定的鸡蛋不进行自动补全。

packages

必需:否

默认值: “”

某些 Python 脚本或非标准模块(没有 setup 文件)的存放位置,您希望它们在系统路径中。

已知问题

  • Sublimelinter-Flake8 可能会停止工作,如果安装了 flake8-plone-api,直到 1.2 版本,flake8-plone-api 不支持 SublimeText(linting),请参阅 pull request 这里。这意味着即将推出的版本可能会支持。这可能发生在您使用全局或 virtualenv flake8 的情况下。您可以在 ST3 控制台中看到错误。

    flake8_plone_api-1.2-py2.7.egg/flake8_plone_api.py", line 16, in run
    with open(self.filename) as f:
    IOError: [Errno 2] No such file or directory: 'stdin'

示例用法

最小构建:
>>> write('buildout.cfg',
... """
... [buildout]
... develop = .
... eggs =
...     zc.buildout
... parts = sublimetext
...
... [sublimetext]
... recipe = plone.recipe.sublimetext
... project-name = plone-recipe-sublime
... eggs = ${buildout:eggs}
... jedi-enabled = True
... """)
>>> system(buildout + ' -c buildout.cfg')
>>> import os
>>> os.path.exists('plone-recipe-sublime.sublime-project')
True

标准构建

>>> write('buildout.cfg',
... """
... [buildout]
... develop = .
... eggs =
...     zc.buildout
... parts = sublimetext
...
... [sublimetext]
... recipe = plone.recipe.sublimetext
... project-name = plone-recipe-sublime
... eggs = ${buildout:eggs}
... jedi-enabled = True
... sublimelinter-enabled = True
... sublimelinter-flake8-enabled = True
... sublimelinter-flake8-executable = ${buildout:directory}/bin/flake8
... """)
>>> system(buildout + ' -c buildout.cfg')
>>> import json
>>> settings = json.loads(read('plone-recipe-sublime.sublime-project'))
>>> 'Sublimelinter.linters.flake8.enable' in settings['settings']
True

多 linters 和没有项目名称

>>> write('buildout.cfg',
... """
... [buildout]
... develop = .
... eggs =
...     zc.buildout
... parts = sublimetext
...
... [sublimetext]
... recipe = plone.recipe.sublimetext
... eggs = ${buildout:eggs}
... jedi-enabled = True
... sublimelinter-enabled = True
... sublimelinter-flake8-enabled = True
... sublimelinter-flake8-executable = ${buildout:directory}/bin/flake8
... sublimelinter-pylint-enabled = True
... """)
>>> system(buildout + ' -c buildout.cfg')

(项目文件名应为之前生成的 plone-recipe-sublime.sublime-project

>>> settings = json.loads(read('plone-recipe-sublime.sublime-project'))
>>> 'pylint' in settings['Sublimelinter']['linters']
True

使用 Anaconda(linting、自动补全)进行所有目的,其余部分未使用

>>> write('buildout.cfg',
... """
... [buildout]
... develop = .
... eggs =
...     zc.buildout
... parts = sublimetext
...
... [sublimetext]
... recipe = plone.recipe.sublimetext
... project-name = plone-recipe-sublime
... eggs = ${buildout:eggs}
... anaconda-enabled = True
... anaconda-pep8-ignores =
...     N802
... """)
>>> system(buildout + ' -c buildout.cfg')
>>> import json
>>> settings = json.loads(read('plone-recipe-sublime.sublime-project'))
>>> 'build_systems' in settings.keys()
True
>>> 'extra_paths' in settings['settings'].keys()
True
>>> settings['settings']['anaconda_linting']
True
>>> settings['settings']['use_pylint']
False

带有 flake8 参数的 flake8 linters

>>> write('buildout.cfg',
... """
... [buildout]
... develop = .
... eggs =
...     zc.buildout
... parts = sublimetext
...
... [sublimetext]
... recipe = plone.recipe.sublimetext
... project-name = plone-recipe-sublime
... eggs = ${buildout:eggs}
... jedi-enabled = True
... sublimelinter-enabled = True
... sublimelinter-flake8-enabled = True
... sublimelinter-flake8-executable = ${buildout:directory}/bin/flake8
... sublimelinter-flake8-args = max-complexity=10  max-line-length=119
...                             exclude=docs,*.egg.,omelette
... """)
>>> system(buildout + ' -c buildout.cfg')

(项目文件名应为 plone-recipe-sublime.sublime-project

>>> settings = json.loads(read('plone-recipe-sublime.sublime-project'))
>>> len(settings['settings']['Sublimelinter.linters.flake8.args']) == 3
True

贡献者

变更日志

1.3.0 (2019-02-04)

新功能

1.2.0 (2018-03-05)

新功能

  • (破坏性)已添加对 SublimeLinter 4.x 版本的支持,这意味着低于版本 4 可能不会工作(尽管未进行测试)。如果您遇到任何问题,我们建议您更新 SublimeLinter 版本或使用较旧的 plone.recipe.sublimetext 版本(1.1.6)。

  • 现在可以提供 pylint 可执行文件路径。

1.1.6 (2018-01-24)

  • 为了性能,设置默认的文件夹排除模式,并且在查找包时消除噪音。

  • 将 follow_symlinks 设置为 true。

  • 将一些蛋分离到自己的项目文件夹设置中,以便能够排除“部分”。 [sunew]

1.1.5 (2017-10-31)

  • flake8 可执行文件路径:启用使用 buildout 相对/用户主目录相对 路径。这意味着现在可以使用 buildout、sublimetext 风格的相对路径。 [nazrulworld]

1.1.4 (2017-08-11)

  • 启用使用 omelette 作为 jedi 的基础。 [sunew]

1.1.3 (2017-07-30)

1.1.2 (2017-07-02)

错误修复

1.1.1 (2017-06-20)

错误修复

  • [#7]`python_interpreter`的值应为字符串,而不是列表。[nazrulworld]

1.1.0 (2017-06-07)

新功能

1.0.1 (2017-05-16)

错误修复

1.0.0 (2017-05-15)

  • 初始发布。[nazrulworld]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

plone.recipe.sublimetext-1.3.0.tar.gz (35.2 kB 查看哈希值)

上传时间 源代码

由以下机构支持