gpt4 book ai didi

intellij-idea - 如何让 IntelliJ/PyCharm 能够正确识别 Python 命名空间的每个部分?

转载 作者:行者123 更新时间:2023-12-04 03:41:42 25 4
gpt4 key购买 nike

我使用了许多共享命名空间的 python 包(setuptools 支持)。这些与带有 setuptools 的 python 2.7 一起工作得很好。我的问题是关于 IntelliJ 的 PyCharm 插件:它不能完全识别包的文件和成员。

假设我有很多包:

第一个包:

cantrips
+--- types
| +--- ...
+--- patterns
| +--- ...
+--- (more subpackages here)
+--- entropy.py
+--- (more *.py files here)

第二个包裹:
cantrips
+--- watch
+--- ...

如果我尝试在 cantrips.watch 中导入任何内容或 cantrips.entropy我完全没有问题(这在 Python27 中完美运行)。 然而 IntelliJ IDEA 13中的Pycharm插件好像找不到 cantrips.entropy带代码检查。

:如何正确地让 IntelliJ/PyCharm 理解命名空间的每个部分?

最佳答案

我正在使用 PyCharm 2019.1 并且我找到了一种方法(它可能有资格获得解决方法)

命名空间包的诀窍在于,一个包分布在多个目录中,一旦你理解了这一事实,就很容易了。

通常在 PyCharm 中,内容根目录或项目根目录设置为您打开项目的目录(普通包的默认值),因为它不需要命名空间包。这让 PyC​​harm 感到困惑,因为它会相应地为解释器设置结构以设置 PYTHONPATH。

要为命名空间包更正此问题,只需将具有命名空间文件夹的所有目录添加到内容根目录。

File -> Settings -> Project Structure -> Add Content Root

所以如果你有一个结构
rootdir/
+--dist_package1/
+--namespace/
+--file1.py
+--dist_package2/
+--namespace/
+--file2.py

而不是将“内容根”目录设置为 rootdir , 将其设置为包含 namespace 的所有目录,例如, dist_package1dist_package2 .

删除设置为 rootdir 的原始内容根目录.

这应该修复对命名空间包的未解析引用

更新(07/25/2019):

您可以右键单击 dist_package1,而不是用困难的方式来做。和 dist_package2并选择
Mark Directory As -> Sources Root

这应该可以解决您的进口问题

关于intellij-idea - 如何让 IntelliJ/PyCharm 能够正确识别 Python 命名空间的每个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29293036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com