即使__init__.py退出,Pycharm也无法识别包

时间:2015-07-15 14:17:21

标签: python pycharm

这是我的目录结构

--> ProjectDirectory
          -->__init__.py


          --> BaseDirectory
                  -->__init__.py


          --> AnotherBaseDirectory
                  -->__init__.py

          -->program.py

program.py

当我给import BaseDirectory

PyCharm无法识别包

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

我做错了什么?

6 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:1)

请检查是否将__init__.py设置为Text文件类型。 enter image description here

答案 2 :(得分:0)

对于遇到这个问题的人,我在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配置:

Pycharm configuration for running a subpackage script

在我的情况下,我作为模块一部分的脚本为(即module.a.bquickstart.cmd.genXML,脚本的参数为-p .

通过这种方式,我们还可以照常针对脚本对该脚本调用pycharm中的python调试器。

参考:

答案 3 :(得分:0)

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

  1. 从PyCharm分离项目
  2. 关闭PyCharm
  3. 从项目中删除.idea文件夹
  4. 推出PyCharm
  5. 重新打开项目并附加到当前窗口
  6. 突然,该项目被确认为软件包

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

您可以尝试将ProjectDirectory添加到路径中。 要做到这一点,你必须去:设置 - >项目设置 - > Project Interpreter,您可以按+。

添加到路径中