tam*_*gal 20 python python-import code-completion
我在一个包中有一些模块(一种工具包),我在我的项目中使用它.结构如下所示:
the_toolkit:
__init__.py
basic_io.py
simple_math.py
matrix_kit.py
...
Run Code Online (Sandbox Code Playgroud)
现在当我从包中导入模块后使用IPython或代码完成VIM时
from the_toolkit import matrix_kit
Run Code Online (Sandbox Code Playgroud)
我得到一堆模块/功能,其matrix_kit.py进口(array,math,log,loggin,format_exc,等等),与该实际功能一起matrix_kit限定.我怎样才能否则过滤掉一切,因为我不感兴趣,math或array在的代码完成matrix_kit模块?
__init__.py许多pythonistas建议这是空的,还是这样做的?
jko*_*ian 18
我遇到了同样的问题,并通过在我的所有导入中添加一个前导下划线来解决它.它看起来并不精彩,但它实现了你所追求的目标.
from __future__ import division as _division
import numpy as _np
import pandas as _pd
Run Code Online (Sandbox Code Playgroud)
使用from .. import*导入模块时,仅导入没有下划线的内容.或者在IPython或spyder中使用制表符完成时.
我喜欢并使用这种方法.从您的项目结构开始,我们将隐藏matrix_kit您不想显示的所有内容.
the_toolkit:
__init__.py
basic_io.py
simple_math.py
matrix_kit.py
...
Run Code Online (Sandbox Code Playgroud)
移动matrix_kit.py到具有相同名称的包中,并在模块名称的开头放置一个下划线:
the_toolkit:
__init__.py
basic_io.py
simple_math.py
matrix_kit:
__init__.py
_matrix_kit.py
...
Run Code Online (Sandbox Code Playgroud)
现在在_matrix_kit.py中添加一个全局变量,_matrix_kit.py列出要显示的所有函数/类/变量的名称.然后在matrix_kit/init .py中添加以下行:
from ._matrix_kit import *
Run Code Online (Sandbox Code Playgroud)
它只会导入__all__ = [...]模块属性中列出的东西.然后,在导入matrix_kit/__init__.py之前,您将实际导入__all__其内容.
| 归档时间: |
|
| 查看次数: |
6279 次 |
| 最近记录: |