【问题标题】:Pycharm not recognizing packages even when __init__.py exits即使 __init__.py 退出,Pycharm 也无法识别包
【发布时间】:2022-03-12 23:02:16
【问题描述】:

这是我的目录结构

--> ProjectDirectory
          -->__init__.py


          --> BaseDirectory
                  -->__init__.py


          --> AnotherBaseDirectory
                  -->__init__.py

          -->program.py

program.py

当我给import BaseDirectory

PyCharm 无法识别包

所有__init__.py 文件都包含带有python 文件名的__all__ 变量

我做错了什么?

【问题讨论】:

    标签: python pycharm


    【解决方案1】:

    您可以尝试将根目录标记为 Sources Root。右键点击根目录,点击Mark Directory As -> Sources Root

    【讨论】:

      【解决方案2】:

      如果我们将__init__.py 设置为Text 文件类型,Pycharm 不会对其进行索引。我们需要从 Text 文件类型中删除 __init__.py

      【讨论】:

      • 难以置信,这是我的问题,一直在尝试调试很长时间。解释器能够读取 init.py 但 Pycharm 没有索引它。 Intellij 请找出默认为文本的原因。
      • 谢谢!几个月来,这个问题一直困扰着我。
      • @Song,需要明确的是,init.py 应该是文本文件还是其他文件?您键入的消息有些模棱两可。 “如果……请检查一下”,检查的结果是什么? 1) 请确保是文本文件 2) 或者请检查是否是文本文件,并将其更改为 XYZZY 类型。
      • 在我的例子中,init.py 不知何故被错误地添加到另一个文件类型识别中,因此 Pycharm 不会尝试将其引用读取为 Python 文件类型。删除它,编辑器将正常工作。
      • 欣赏人。不小心将初始化文件添加到另一个文件类型!!
      【解决方案3】:

      我的问题是我的包名foo-bar中有一个连字符,这也带来了其他问题。用下划线替换:foo_bar 立即解决了问题。

      【讨论】:

        【解决方案4】:

        对于遇到这个问题的人,我在 Pycharm 2018 上找到的解决方案如下:

        这个想法是以-m的方式运行我们的python代码,而不是这样做

        python -m module.a.b arguments
        

        我们这样做

        runpy.py module.a.b arguments
        

        根据runpy documentation,是脚本

        实现了-m 命令行开关,允许脚本 使用 Python 模块命名空间而不是文件系统定位。

        以下是我们实际执行的步骤:

        • 找到系统内部的runpy.py。对于我的情况,我使用的是 centos,runpy.py 位于 /usr/lib64/python3.6/runpy.py

        • 如下设置 Pycharm 配置:

        就我而言,作为模块一部分的脚本是(即module.a.bquickstart.cmd.genXML,脚本的参数是-p .

        这样,我们也可以像往常一样针对脚本调用pycharm里面的python调试器。

        参考:

        【讨论】:

          【解决方案5】:

          这里的答案对我不起作用,但以下答案对我有用(Pycharm community 2018.3):

          1. 从 PyCharm 中分离项目
          2. 关闭 PyCharm
          3. 从项目中删除 .idea 文件夹
          4. 启动 PyCharm
          5. 重新打开项目并附加到当前窗口
          6. 项目突然被识别为包

          【讨论】:

            【解决方案6】:

            最终为我解决了这个问题,因为 init.py 没有关联,因为文本文件将 按内容自动检测文件类型 已识别的文件类型列表并从列表中删除 init.py。

            【解决方案7】:

            您可以尝试将ProjectDirectory 添加到路径中。 为此,您必须转到:设置 -> 项目设置 -> 项目解释器,然后您可以通过按 + 添加到路径中。

            【讨论】:

              猜你喜欢
              • 2021-12-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-06
              • 1970-01-01
              • 2016-06-01
              • 1970-01-01
              相关资源
              最近更新 更多