跳转到主要内容

基于buildout的Python项目的Visual Studio Code配置

项目描述

Package Status Travis Build Status Test Coverage Python Versions Latest Version License https://img.shields.io/badge/code%20style-black-000000.svg

介绍

collective.recipe.vscode 是为想要在基于 Visual Studio Code 开发并使用 python 自动补全和智能感应 功能的构建者提供的 buildout 配方。通常,即使提供了虚拟环境路径,python 路径中也可能没有 buildout 鸡蛋。这个工具不仅可以添加 eggs 路径作为 python extraPath,还可以根据项目管理 linter、自动格式化等 vscode 设置。

可能有人会问,为什么我们会使用这个工具,我们是否可以轻松创建 Visual Studio Code 项目设置(我们对 Visual Studio Code 配置有更好的了解)?我完全同意你的看法,但如果你想从 Visual Studio Code 的自动补全功能中获益(基本上我是自动补全的爱好者),你必须添加所有鸡蛋链接,如果项目规模很大(想想任何 Plone 驱动的项目),手动管理鸡蛋链接会很困难。此外,始终使用特定于项目的 linter 路径也是一个好的做法。例如,我的全局 flake8 linter 对我的 python3 项目不起作用!

安装

安装 collective.recipe.vscode 非常简单,只需在 buildout 中为 vscode 创建一个部分即可。在开始使用 collective.recipe.vscode 之前,如果你打算使用 linter 功能,请确保它们已添加到 eggs 部分或全局安装。

示例 Buildout

[buildout]
parts += vscode

[vscode]
recipe = collective.recipe.vscode
flake8-enabled = True
flake8-path = ${buildout:directory}/bin/flake8
black-enabled = True
black-args = ----line-length 88

您也可以使用以下方法自动将 vscode 配方包含到所有 buildout 中

修改/添加 ~/.buildout/default.cfg

[buildout]
_to_always_include_vscode = ${vscode:recipe}

[vscode]
recipe = collective.recipe.vscode
_to_remove_buildout_warning = ${buildout:_to_always_include_vscode}

可用选项

eggs

必需:否

默认:将包含所有指定 eggs 的配方。

您项目的 eggs 列表,这些 eggs 将作为 自动补全和智能感应 的额外路径。

python-path

必需:否

默认:collective.recipe.vscode 将找到当前 python 可执行路径。

当前项目的 python 可执行路径,如果您正在使用虚拟环境,则应该是该 python 路径。提示:${home} 和 ${project} 变量应该可以工作。

flake8-enabled

必需:否

默认:False

指示是否启用基于 flake8 的 linter。

flake8-path

必需:否

默认:尝试自动找到 flake8 可执行路径。

flake8-args

必需:否

默认:””

pylint-enabled

必需:否 默认:False

pylint-path

必需:否

默认:尝试自动找到 pylint 可执行路径。

pylint-args

必需:否

默认

pep8-enabled

必需:否

默认:False

pep8-path

必需:否

默认:尝试自动找到 pep8 可执行路径。

pep8-args

必需:否

默认:””

jedi-enabled

必需:否

默认:False

如果为 False,则 python.languageServer 将是 Pylance。请确保您已安装 Pylance vscode 扩展。

omelette-location

必需:否

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

autocomplete-use-omelette

必需:否

默认:False

black-enabled

必需:否

默认:False

black-path

必需:否

默认:尝试自动找到 black 可执行路径。

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

black-args

必需:否

默认:‘’

isort-enabled

必需:否

默认:False

指示是否启用 isort。

isort-path

必需:否

默认:尝试自动找到 isort 可执行路径。

isort-args

必需:否

默认:‘’

ignore-develop

必需:否

默认:False

如果您不想包含开发 eggs,则应选择自动补全。

ignores

必需:否

默认:””

如果您想指定鸡蛋,请不要使用自动完成。

必需:否

默认:””

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

generate-envfile

必需:否

默认值:True

生成 .env 文件以将鸡蛋添加到 PYTHONPATH

robot-enabled

必需:否

默认:False

为Robot Framework语言服务器生成设置 robot.python.env,在 tasks.json 中生成任务 启动Plone测试服务器。在 launch.json 中为Robot Framework语言服务器生成任务 Robot Framework: 启动模板

示例用法

使用标准设置安装vscode配方

>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
... develop =
...     %(test_dir)s/develop/vscodetest_pkg1
... eggs =
...     vscodetest_pkg1
...     zc.recipe.egg
...     zc.buildout
... parts = vscode
...
... [vscode]
... recipe = collective.recipe.vscode
... packages = %(test_dir)s/Products
... ignore-develop = False
... eggs = ${buildout:eggs}
... flake8-enabled = True
... flake8-path = ${buildout:directory}/bin/flake8
... black-enabled = True
... black-path = $project_path/bin/black
... black-args = --line-length 88
...              --skip-string-normalization
... """ % globals())
>>> output_lower = system(buildout + ' -c buildout.cfg').lower()
>>> "installing vscode." in output_lower
True
>>> 'tests/develop/vscodetest_pkg1' in output_lower
True
>>> ls(sample_buildout)
-  .installed.cfg
d  .vscode
d  bin
-  buildout.cfg
d  develop-eggs
d  eggs
d  parts
<BLANKLINE>
>>> import json
>>> import os
>>> from collective.recipe.vscode.recipes import mappings
>>> settings_dir = os.path.join(sample_buildout, ".vscode")
>>> vsc_settings = json.loads(read(settings_dir, 'settings.json'))
>>> len(vsc_settings[mappings['autocomplete-extrapaths']]) == 4
True
>>> mappings['flake8-enabled'] in vsc_settings
True
>>> vsc_settings[mappings['formatting-provider']] == "black"
True
VS Code设置,包含所有默认选项:
>>> os.unlink(os.path.join(settings_dir, 'settings.json'))
>>> write(sample_buildout, 'buildout.cfg',
... """
... [buildout]
... develop =
...     %(test_dir)s/develop/vscodetest_pkg1
... eggs =
...     vscodetest_pkg1
...     zc.recipe.egg
... parts = vscode
...
... [vscode]
... recipe = collective.recipe.vscode
... eggs = ${buildout:eggs}
... """ % globals())
>>> output = system(buildout + ' -c buildout.cfg').lower()
>>> vsc_settings = json.loads(read(settings_dir, 'settings.json'))
>>> mappings['flake8-path'] not in vsc_settings
True
>>> len(vsc_settings[mappings['autocomplete-extrapaths']]) == 3
True

贡献者

变更日志

0.1.9 (2023-06-30)

  • 添加选项 robot-enabled(默认 false)以启用对Robot Framework语言服务器的支持 [datakurre]

0.1.8 (2021-10-28)

  • 将语言服务器更改为Pylance(Microsoft不再工作)

  • 默认生成 .env 文件以帮助调试

  • 选项已被移除。 jedi-path

  • vsintellicode.python.completionsEnabled 现已不再是VS代码设置的一部分。

0.1.7 (2021-06-23)

  • 通过包含 terminal.integrated.env.* 设置和 zc.recipe.egg 在路径中修复 vscode 调试器。

0.1.6 (2020-07-15)

  • 自动查找所有配方中的所有鸡蛋,因此不再需要 eggs 参数。[djay]

  • 说明如何自动将vscode配方包含在所有您的构建中 [djay]

  • 添加了 python.analysis.extraPaths,这是Microsoft语言服务器/Pylance用于查找鸡蛋的。[djay]

  • 如果 jedi-enabled 关闭,请确保“python.languageServer”设置为‘Microsoft’且‘vsintellicode.python.completionsEnabled’已开启 [djay]

0.1.5 (2020-06-26)

0.1.4 (2019-05-28)

0.1.3 (2019-03-12)

错误修复

0.1.2 (2019-02-14)

新功能

  • 默认 files.associationsfiles.exclude 对于 python 文件现在将自动包含,如果它们不在现有的 settings.json 中。

错误修复

  • 通常,buildout会在存在的情况下首先删除生成的文件/目录,这就是为什么之前删除了 settings.json 文件,最终丢失了现有的设置! [nazrulworld]

0.1.1 (2019-02-11)

错误修复

0.1.0 (2019-02-10)

  • 初始发布。 [nazrulworld]

项目详情


下载文件

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

源代码分发

collective.recipe.vscode-0.1.9.tar.gz (23.1 kB 查看哈希值)

上传于 源代码

构建的发行版

collective.recipe.vscode-0.1.9-py2.py3-none-any.whl (22.5 kB 查看哈希值)

上传于 Python 2 Python 3

支持者