关于__init__.py文件无效的问题

已有__init__.py仍然无法导入模块

    • 问题
    • 解决方案
    • pycharm中有效,cmd中无效
    • Ending

问题

众所周知,init.py存在的意义是将__init__.py所在的文件夹变成一个包,从而可以使用import导入该文件夹下的其他.py文件中的函数,例如

关于__init__.py文件无效的问题_第1张图片
init.py的存在让coupling_registration_segmentation文件夹成为了一个包,从而让backup.py文件内可以通过下列语句导入blocks.py中的somefunction函数

from coupling_registration_segmentation.blocks import somefunction

然而,pycharm却提示没有coupling_registration_segmentation这个模块,尽管在文件夹coupling_registration_segmentation下已经创建了__init__.py这个文件。
在这里插入图片描述

解决方案

网上搜索无果,一个偶然的机会,我发现了原因。

无法导入时的文件布局:
关于__init__.py文件无效的问题_第2张图片

成功导入时的文件布局:
关于__init__.py文件无效的问题_第3张图片
没错,唯一的区别在于用pycharm打开工程时,希望作为模块的文件夹是否为根文件夹,换言之,如果希望__init__.py发挥作用,应当在打开工程时,选择模块文件夹的上一级目录,或者说是__init__.py的上两级目录。
关于__init__.py文件无效的问题_第4张图片

关于__init__.py文件无效的问题_第5张图片
如图,应选择workspace文件夹或上级的U-ResNet文件夹,而不是coupling_registration_segmentation文件夹。

pycharm中有效,cmd中无效

原因是command中搜索路径与pycharm不同
https://blog.csdn.net/qq_29726869/article/details/82179312

Ending

个人经验,希望对解决类似问题有所帮助

你可能感兴趣的:(学习笔记,python,pycharm)