代码之家  ›  专栏  ›  技术社区  ›  lvella

如何防止VSCode跨语句重新排序python导入?

  •  0
  • lvella  · 技术社区  · 1 年前

    这是 correct way 要将Gtk3导入python:

    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, Gdk, GObject
    

    当我在VSCode中保存这样的代码时 "editor.formatOnSave": true ,它被重新排序为:

    from gi.repository import Gtk, Gdk
    import gi
    gi.require_version('Gtk', '3.0')
    

    这使得Gtk在我有机会指定我正在使用的版本之前就被加载了,这至少会导致显示以下警告:

    PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '4.0') before import to ensure that the right version gets loaded.
    

    或者更糟的是,给我一个例外,比如:

    ValueError: Namespace Gtk is already loaded with version 4.0
    

    现在,我喜欢VSCode代码格式,但我不希望它重新排序我的导入,特别是不跨语句(因为python中的导入有副作用)。如何正确使用带有Gtk的VSCode的Python代码格式化程序?

    1 回复  |  直到 1 年前
        1
  •  2
  •   Sachin Chaurasiya    1 年前

    为了防止VSCode在语句之间重新排序Python导入,可以将编辑器配置为使用特定的Python代码格式化程序,该格式化程序将导入的顺序保持为原始代码中的顺序。以下是您的操作方法:

    • 如果您还没有安装VSCode的Python扩展,请安装。
    • 安装一个维护导入顺序的Python代码格式化程序,例如 isort yapf 。您可以通过在终端中运行命令pip-install-isort或pip-install-yapf来完成此操作。
    • 在VSCode中,点击左下角的档位图标并选择“settings”(设置),打开设置。
    • 在搜索栏中搜索“Python格式:提供程序”。
    • 选择“Edit in settings.json”编辑settings.json文件。
    • 根据您安装的代码格式化程序,将以下行添加到文件中:
    • 对于isort:“python.formating.provider”:“isort”
    • 对于yapf:“python.formating.provider”:“yapf”
    • 保存文件并关闭设置。
        2
  •  0
  •   Kjell Ericson    1 年前

    在其他导入之后,我在代码中这样做了,它似乎可以工作,所以我可以用格式保存代码。

    import gi
    gi.require_version('Gtk', '3.0')
    
    if True:
        from gi.repository import GLib
        from gi.repository import Gtk, Gdk