即使__init__.py存在,Pycharm也无法识别包

lg40wkob  于 2022-11-08  发布在  PyCharm
关注(0)|答案(8)|浏览(418)

这是我的目录结构

--> ProjectDirectory
          -->__init__.py

          --> BaseDirectory
                  -->__init__.py

          --> AnotherBaseDirectory
                  -->__init__.py

          -->program.py

内部program.py
当我给出import BaseDirectory
PyCharm无法识别包
所有__init__.py文件都包含带有python文件名的__all__变量
我做错了什么?

20jt8wwn

20jt8wwn1#

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

ercv8c1e

ercv8c1e2#

如果我们将__init__.py设置为Text文件类型,Pycharm不会索引它。我们需要从Text文件类型

中删除__init__.py

xzlaal3s

xzlaal3s3#

我的问题是我在包名foo-bar中有一个连字符,这也带来了其他问题。foo_bar立即解决了这个问题。

bfhwhh0e

bfhwhh0e4#

对于谁挣扎与这个问题,我找到我的解决方案Pycharm 2018如下:
我们的想法是以-m的方式运行python代码,而不是

python -m module.a.b arguments

我们有

runpy.py module.a.b arguments

根据runpy documentation,它是
实现了-m命令行开关,该开关允许使用Python模块名称空间(而不是文件系统)定位脚本。
以下是我们实际执行的步骤:

  • 找到位于系统内部的runpy.py
  • 按如下方式设置Pycharm配置:

在我的例子中,作为模块一部分的脚本是(即module.a.bquickstart.cmd.genXML,脚本的参数是-p .
这样,我们也可以像往常一样在pycharm内部对脚本调用python调试器。
参考编号:

idfiyjo8

idfiyjo85#

这里的答案对我不起作用,但下面的答案对我起作用(Pycharm community 2018.3):
1.从PyCharm分离项目
1.关闭PyCharm
1.从项目中删除.idea文件夹
1.启动PyCharm
1.重新打开项目并附加到当前窗口
1.突然项目被识别为包

blpfk2vs

blpfk2vs6#

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

8fsztsew

8fsztsew7#

如果高亮显示对__init__.py不起作用,这意味着PyCharm认为它是一个不同的类型,所以包将不起作用。
文件名模式可以在设置(File > Settings)中的Editor > File Types部分找到__init__.py可以在类别中,如Text或File type auto-detected by file content。您不需要搜索,只需__init__.py放到Python类别中,一切都会恢复正常(在抱怨init文件已经在其他类别中之后)。
如果包含init文件目录没有适当的名称,则可能会出现其他问题。如果您坚持使用PEP8文件命名约定,则必须确保安全,但这些名称只是可接受文件名的子集。

nzrxty8p

nzrxty8p8#

您可以尝试将ProjectDirectory添加到路径中。为此,您必须转到:设置-〉项目设置-〉项目解释器,在那里你可以添加到路径按+。

相关问题