繁体   English   中英

从子包中导入另一个子包在 Pycharm 中不显示 docstirng

[英]import another subpackage from a subpackage doesn't show docstirng in Pycharm

为了使其更易于理解,这里是一个最小的可重现示例。

结构:

C:.
├───.idea
│   │   PyCharm stuff
└───src
    │   main.py
    │
    ├───folder
    │   │   script.py
    │   │   __init__.py
    │
    └───folder2
        │   script2.py
        │   __init__.py

我在 src 中启动 PyCharm,这就是我想要的。

我的main.py代码如下:

from folder.script import my_function_script

if __name__ == '__main__':
    my_function_script()

这很好用。 将鼠标悬停在函数名称上时,自动完成功能和文档字符串可用。 在此处输入图像描述

这是包folder中的模块script.py

from folder2.script2 import my_function_script_2

def my_function_script() -> None:
    """
    This is a docstring
    :return: None
    """
    my_function_script_2()

这是问题所在。 因为 IDE 认为我想导入folder中的包folder2没有任何作用(自动完成、文档字符串等......)。 但事实并非如此,因为我知道我只从main.py (不在包folder中)调用script.py 因此,为什么,我需要从folder2.script2写入 - 否则如果我从main.py调用script.py ,python 将找不到folder2.script2

我的问题是:

如何做到这一点,以便 PyCharm 理解当我在包folder中导入内容时,我通过“在main.py中”来完成它,因此显示文档字符串,如果已经完成类型提示,则检查变量的类型等。 ..

经过几天的研究,我找到了答案。

解决方案 1:

from src.folder2.script2而不是from folder2.script2因为我是从src的父目录打开项目。

解决方案 2:

将项目的源目录设置为src ,因为它当前是src的父目录。 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM