当提示在 VSCode Python 中安装 Pylint 时,不小心选择了“不再显示此提示”。我应该如何撤消/重置操作以便再次出现提示?
假设我在编辑器中选择了一些文本。我想定义自己的 Python 函数或脚本:
此外,我想在理想情况下将这些函数或脚本注册为 VSCode 命令(具有特定的commandIDs),我可以定义自己和 VSCode 中的命令面板。通过这样做,我可以将它们绑定到keybindings.json具有特定快捷方式和 when 子句的快捷方式。
VSCode 中是否有任何内置功能可以执行此操作?如果没有,我可以遵循哪些步骤来做到这一点?
我正在使用 Python 3.6 和最新版本的 vscode。
我的文件夹结构:
/folder
/src
src.py
/tests
src_test.py
Run Code Online (Sandbox Code Playgroud)
src.py:
class Addition:
def __init__(self, a, b):
self.a = a
self.b = b
def run(self):
return self.a + self.b
Run Code Online (Sandbox Code Playgroud)
src_test.py:
import unittest
from ..src.addition import Addition
class TestAddition(unittest.TestCase):
def test_addition(self):
inst = Addition(5, 10)
res = inst.run()
self.assertEqual(res, 16)
if( __name__ == "main"):
unittest.main()
Run Code Online (Sandbox Code Playgroud)
这是我的项目settings.json:
{
"python.testing.unittestArgs": [
"-v",
"-s",
".",
"-p",
"*_test.py"
],
"python.testing.pytestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.unittestEnabled": true
}
Run Code Online (Sandbox Code Playgroud)
然后在项目根文件夹下:
python3 -m unittest 测试/src_test.py
File "/usr/lib/python3.6/unittest/loader.py", line …Run Code Online (Sandbox Code Playgroud) 我在 VS Code 中设置了一个工作区,我在其中进行 python 开发。我启用了 linting,启用了 pylint 作为提供程序,并启用了保存时的 lint,但我在“问题”面板中仍然没有看到任何错误。当我在虚拟环境中通过命令行运行 pylint 时,我看到了很多问题 - 所以我知道 pylint 可以工作。我还使用黑色格式(保存时),它可以正常工作。我尝试过使用默认的 pylint 路径以及手动将其更新到确切的位置,但仍然没有结果。当我查看 python 的输出面板时,看起来 pylint 甚至从未运行(即我看到 black 的命令在那里运行,但 pylint 没有任何命令)。
我的 pylint 版本是 2.4.4,VS Code 版本是 1.46
知道如何让它发挥作用吗?
在我的 python 项目中,mypy从 0.770升级到 0.782后,在以前没有类型错误的文件中收到错误:
my_pkg_name\__init__.py: error: Source file found twice under different module names: 'top_pkg.my_pkg_name' and 'my_pkg_name'
Found 1 error in 1 file (checked 1 source file)
Run Code Online (Sandbox Code Playgroud)
我很确定这与mypy上的问题 #8944以及 vscode-python 在打开的文件上执行 mypy 的方式有关。我尝试添加各种 mypy 标志(例如--namespace-packages, --no-namespace-packages),但这并没有解决问题。
my_pkg_name 确实包含一个__init__.py,所以也包含top_pkg。有了mypy==0.770这不是一个问题。
查看扩展的输出,这是调用 mypy 的方式:
> ~\.virtualenvs\OfflineSystem.38\Scripts\python.exe `
c:\Users\***\.vscode\extensions\ms-python.python-2020.8.108011\pythonFiles\pyvsc-run-isolated.py mypy `
--ignore-missing-imports --follow-imports=silent --show-column-numbers `
d:\***\top_pkg\my_pkg_name\sub_pkg\my_file.py
Run Code Online (Sandbox Code Playgroud)
是否应该更改与 mypy 相关的 vscode 设置中的某些内容才能使其正常工作?
Python 的事后调试(通过 IPython 的%debug魔法很容易访问)允许一次或多次跳出异常的范围,并查看抛出异常之前的变量。非常有用。
VSCode-python 与 Python 的调试器有很好的集成。如果引入了断点,则可以使用调试工具栏进入和退出编辑器中的功能。这比使用控制台进行调试更加用户友好。但是,此调试工具栏似乎无法在事后分析模式下工作。
当使用“开始调试”命令 (F5) 在 vscode 中运行 Python 脚本并抛出异常时,异常会在 vscode 的编辑器中突出显示,但退出不起作用 - 如果我在调试工具栏。
有没有办法将 Python 的事后调试与 vscode 的编辑器集成在一起?我错过了什么吗?我期待这只是工作。
打开"python.analysis.typeCheckingMode": "strict"或时"python.analysis.typeCheckingMode": "basic",
.py包含其他模块导入的文件无法识别重新导入并以错误突出显示它们:
"Flow" is not exported from module "prefect"
Import from "prefect.core" insteadPylancereportPrivateImportUsage
Run Code Online (Sandbox Code Playgroud)
其中原始模块具有__init__.py但不包含__all__导出,但导入所有单个对象(在上面的情况下Flow)。有什么方法可以关闭该特定设置settings.json或处理消除错误噪音的问题吗?
假设您在 VS Code 中打开了两个窗口,一个是 Jupyter Notebook,另一个是 Python 交互窗口。两者都运行相同的内核。有没有办法链接这两个窗口,以便当单元在笔记本中运行时,交互式窗口将知道结果变量?
我知道 VS Code 有一种可以链接到交互式窗口的 Python 代码格式,并且 Jupyter 笔记本可以转换为这种格式。是否可以直接将 Jupyter 笔记本链接到交互式窗口,而无需先进行此转换?
对于 JupyterLab,这是通过 New Console for Notebook 命令来完成的。
假设我有一个具有以下文件结构的项目:
\nproject_dir\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package1\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module1.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package2\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module2.py\nRun Code Online (Sandbox Code Playgroud)\n当我想在其他模块中使用 module1 中的某个类时,我输入类似的内容
\nclass SomeNewClass(ClassFromModule1): # here I press ctrl-space to make auto-import\n ...\nRun Code Online (Sandbox Code Playgroud)\n当 Pylance 进行自动导入时,它总是从项目的根目录开始,所以我得到了这个自动导入:
\nfrom src.package1.module1 import ClassFromModule1\nRun Code Online (Sandbox Code Playgroud)\n问题是我的工作目录是src并且我想得到
\nfrom package1.module1 import ClassFromModule1\nRun Code Online (Sandbox Code Playgroud)\n有没有办法修复自动导入 Pylance 功能的根路径?
\n在多项目(VSCode 将其称为多根)python 存储库中工作时,用于测试的 VSCode python 插件在选择运行所有测试时无法运行所有测试,但运行单个文件夹或测试会通过。这显然是一个奇怪的问题,所以我进一步调查了这一点。
vscode python插件在“测试结果”面板中的输出如下:
Running tests (pytest): /home/workspace
Running test with arguments: --rootdir /home/workspace --override-ini junit_family=xunit1 --junit-xml=/tmp/tmp-289km5DwtjAXzkh.xml
Current working directory: /home/workspace
Workspace directory: /home/workspace
Run completed, parsing output
Test result not found for: ./my_awesome_dir/tests/my_awesome_module/my_awesome_test.py::TestAwesomeness::test_is_awesome[input_data0-AwesomeStuff]
Run Code Online (Sandbox Code Playgroud)
这个问题之前已经在 vscode-python 存储库中提到过: https: //github.com/microsoft/vscode-python/issues/18658
然而,即使我找到了解决问题的方法,VSCode Python 存储库也不允许向现有问题添加更多注释,也不允许打开新问题,以便我可以在那里添加更适合的信息。因此,我打算在这里添加这些信息,这可能是第二好的地方。