PyCharm 自动导入和自动补全功能

15

我第一次尝试使用PyCharm。由于之前使用Eclipse/PyDev环境,我必须说,到目前为止,一切都很顺利。

但是有一个功能我找不到,它如下所示:

在PyDev的自动完成列表中,当输入文件作用域中不存在的符号时,它会显示其所在的模块列表。如果您选择该自动完成项目,PyDev不仅会为您完成符号,还会自动添加导入语句以处理依赖关系。

这个功能是否存在于PyCharm中?

到目前为止,它似乎只能自动完成文档作用域中已经存在的内容。

3个回答

18

如果您认为这是一个错误,请务必在http://youtrack.jetbrains.net/issues/PY上提交,并提供重现步骤。 - CrazyCoder
6
当你使用Control-Option-Space(非Mac上可能是Control-Alt-Space)调用自动完成时,它可以工作。这将自动完成功能从当前文件外部的符号,并且接受一个项目后会自动添加其导入语句。 - Jakub Roztocil
1
没错,这不是一个bug。但一开始可能并不明显。 - Xealot
1
确实,这与IntelliJ的行为不同。 - fabspro
1
所以,自动完成存在..但是像IntelliJ那样的自动自动完成却不存在.. - Paschalis
显示剩余3条评论

0

我认为这绝对是一个错误或者不良功能。

在安装了 PyCharm 2021.3.3 后,当编写代码时,IDE 会根据代码中的随机单词自动静默地安装一些包。结果,环境被破坏了。

以下是一个示例(来自 PyCharm 事件日志):

source /home/user/.cache/pypoetry/virtualenvs/project-_uWvZL1R-py3.9/bin/activate
/home/user/anaconda3/bin/poetry add self

Using version ^2020.12.3 for self

Updating dependencies
Resolving dependencies...

Writing lock file

Package operations: 2 installs, 0 updates, 1 removal

  • Removing setuptools (62.6.0)
  • Installing decorator (5.1.1)
  • Installing self (2020.12.3)

  EnvCommandError

    × python setup.py egg_info did not run successfully.
    │ exit code: 1
    ╰─> [1 lines of output]
        ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.
        [end of output]

0
这些变体已经存在,只是出于性能原因,它们没有包含在基本完成和自动弹出完成中。为了看到它们,您需要在同一位置第二次调用完成或使用专用快捷键(在按键映射设置中搜索“第二个基本完成”)。

Auto-import extended completion demo


非常感谢更新。不幸的是,这并没有解决问题,因为我们需要为每个缺失的导入按下快捷键。 示例:我有10个不同的缺失导入,我需要执行10次快捷键。在IntelliJ中,仅在存在歧义的导入时才需要执行完整的导入操作。关于性能问题,我无法理解为什么Python比Java或JavaScript更容易出现这种情况。我认为可以在Python中实现即时导入,甚至可以通过一些调整(如即时导入的软件包列表)来解决性能问题。 - davidxxx
因为在Java和JavaScript的世界中,依赖通常是按项目管理的,而在Python中,有系统解释器可以安装数百个包,并且所有的API都可以进行导入。比如想象一下Anaconda发行版。请继续关注,我们正在努力解决这个问题。 - east825

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接