PyCharm 中“目录”和“Python 包”之间的区别

GuS*_*uku 16 pycharm python-packaging

Denter图像描述在这里

  1. 何时使用 Directory over Python Package?PS:我知道我可以从后者导入,但不能从前者导入。如果是这样,为什么不将所有内容创建为 Python 包?
  2. 此外,PyCharm 是否根据名称将位置标记为一个或另一个?这种行为背后的模式是什么?例如,我创建了一个目录并将其命名为“lambda”。但是当我将它重命名为 'lambdas' 时,pycharm 会自动将其更改为 Python Package(带有点符号的公文包)。Python关键字?

wim*_*wim 22

何时使用 Directory over Python Package?

当您想在其中放置一些应该可导入的模块时,您可以使用“Python 包”。PyCharm 将自动__init__.py为目录创建一个。

为什么不将所有内容创建为 Python 包?

并非项目中的每个子目录都必须是一个包。例如docstests通常只是目录。

PyCharm 是否根据名称将位置标记为一个或另一个?

如果子目录名称是有效标识符而不是关键字,则 PyCharm 似乎用点标记图标,无论子目录是否为包。这可能是因为,在 Python 3.3+ 中,子目录也是隐式命名空间包(即使没有__init__.py文件,它们仍然是可导入的)。

如果您有一个与 Python 2.7 解释器相关联的项目,除非__init__.py添加文件,否则您不会在图标上看到点,因为隐式命名空间包在 Python 2 中不是一回事。

  • 是的,这意味着每个子目录都是可导入的。我不知道如何在 PyCharm 中取消标记,也许你不能。 (2认同)