基于buildout的Python项目的SublimeText配置
项目描述
简介
plone.recipe.sublimetext 是为喜爱 ST3 并希望在开发基于 Buildout 的 Python 项目时拥有类似 Python IDE 特性的开发者准备的构建脚本。这个工具将帮助他们根据项目创建适当的路径位置分配的 SublimeText 设置。目前,plone.recipe.sublimetext 提供了对 Anaconda(一个包含所有功能的集成包)、Jedi、Sublimelinter、Sublimelinter-Flake8、Sublimelinter-Pylint 的支持设置。可能会有人提出一个一般性的问题,即为什么我们会使用这个工具,我们是否可以轻松创建 ST3 项目设置(我们对 ST3 的配置有更好的了解)?我完全同意你的看法,但如果你想从 Anaconda 或 Jedi 的 Python 自动完成功能中受益(基本上我是一个自动完成功能的爱好者),你必须添加 Anaconda 或 Jedi 的所有路径设置,如果项目规模很大(想想任何 Plone 驱动的项目),那么手动管理 eggs 链接将变得很困难(除了 Sublimelinter-Pylint 之外,还需要添加到 sys.path 中的路径列表以查找模块)。
安装
安装 plone.recipe.sublimetext 非常简单,只需在 buildout 中创建一个 sublimetext 部分。在使用 plone.recipe.sublimetext 之前,请确保 Jedi、Sublimelinter、Sublimelinter-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-Pylint 或 Anaconda 的路径位置。
- 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,值得注意的是,前缀--不是必需的,您可以通过空格和/或换行符提供多个参数。
sublimelinter-flake8-args = max-line-length=90 –show-source
- 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 文件)的存放位置,您希望它们在系统路径中。
链接
代码仓库
持续集成
问题跟踪器
https://github.com/collective/plone.recipe.sublimetext/issues
已知问题
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
贡献者
Md Nazrul Islam<email2nazrul@gmail.com>,原作者
Sune Brøndum Wøller [sunew]
变更日志
1.3.0 (2019-02-04)
新功能
SublimeLinter linter 参数可以提供特定的选项。目前支持 sublimelinter-flake8 和 sublimelinter-pylint。
已添加新风格的 SublimeLinter linter 设置生成。 [nazrulworld]
为 Anaconda 设置添加了更多选项(anaconda-pep257-enabled、anaconda-pep257-ignores)。
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)
将存储库所有权转让给 Plone Collective
1.1.2 (2017-07-02)
错误修复
[#8] 使用pip在虚拟环境中安装时出错
1.1.1 (2017-06-20)
错误修复
[#7]`python_interpreter`的值应为字符串,而不是列表。[nazrulworld]
1.1.0 (2017-06-07)
新功能
[#4] 支持Anaconda [nazrulworld]
1.0.1 (2017-05-16)
错误修复
1.0.0 (2017-05-15)
初始发布。[nazrulworld]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
plone.recipe.sublimetext-1.3.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5136a6c5a3dc62a57db99d0ac300ebb98ac1b1a36381769a1f312ee2022d2e2a |
|
MD5 | 7997b23c0c004e0d6995af9699037a98 |
|
BLAKE2b-256 | 6b3efb9abb1e6a0c18266c1b48feefe92b22bde6586897da3159dfd8718320e3 |