在PyCharm中隐藏 __ init __ .py文件
最近在重构一个Django项目,有很多的空__init__.py
文件,在高版本的Python中,这个空文件可以被省略,但是Django的一些组件似乎仍然依赖这些声明文件。因为每个包里都有一个,而且里面又是空的,所有寻找了一些方法从视觉上隐藏这些“垃圾”。
省流版本
创建一个新的作用域规则
在PyCharm设置中找到外观与行为
-> 作用域
点加号,新建一个本地规则,比如叫作no_init
在模式一栏填入文件的显示规则为!file:*/__init__.py
,即最后如下图:
在文件视图中选择这个新的作用域规则
完事!
好奇
__ init __.py 有啥用?
- 作为包的标识符:当一个文件夹中包含了
__init__.py
文件时,Python 将其视为一个包。这样,包内部的文件之间可以使用相对导入,而不是绝对路径。这对于精简代码和提高可读性非常有用。- 导入模块和函数:在包的内部,我们可以先把需要的函数、常量、类导入到
__init__.py
中。然后,其他文件就可以使用from 包名 import 函数名
的方式导入这些内容,而不用关心包的绝对路径。
为什么在写代码的时候,没有包含__ init __.py文件的文件夹也可以被作为包导入
PEP 420 – Implicit Namespace Packages
这个提案(自Python 3.3 开始生效)介绍了一种新的Python包类型,即“命名空间包”(namespace package)。命名空间包允许将单个Python包拆分为多个磁盘上的目录。与现有的pkgutil.extend_path和setuptools.declare_namespace不同,这个提案中的命名空间包不需要在
__init__.py
中定义__path__
,而是由导入机制自动构建。命名空间包不受固定__path__
的限制,而是在每个部分加载时动态计算路径。此外,命名空间包可以跨多个目录分布,无需提供__init__.py
文件。这个提案的目标是统一命名空间包的机制,以便更好地支持Python包的拆分和分发。
关于PyCharm中的作用域
在PyCharm中隐藏 __ init __ .py文件
http://coooolfan.com/2024/04/26/hide-init-py-in-pycharm/