Python 包文件夹结构

我一直在研究如何为自定义 python 包构建文件夹结构。有几次尝试,但似乎没有一个是普遍适用的。特别是文件的使用(或不使用\__init__.py)。


我有一个由几个子包组成的包,每个包都负责解析某种类型的文件。因此,我目前采用了这种结构:


Parsers/

├── __init__.py

|

├── ExternalPackages

│   ├── __init__.py

│   ├── package1

│   └── package2

|

├── FileType1_Parsers/

│   ├── __init__.py

│   ├── parsers1.py

│   └── containers1.py

│   

└── FileType2_Parsers/

    ├── __init__.py

    ├── parsers2.py

    └── containers2.py

但它似乎不是很pythonic,当我导入他的包并且我想使用某个模块的某个类时,我必须输入类似的东西


from Parsers.FileType1_Parsers.parsers1 import example_class

是否有关于如何构建此类包的约定或关于如何避免如此长的导入行的任何规则?


杨__羊羊
浏览 183回答 2
2回答

慕尼黑的夜晚无繁华

您可以将以下行添加到 Parsers/__init__.pyfrom .FileType1_Parsers.parsers1 import example_class然后,你可以导入example_class通过from Parsers import example_class这是大包装中的常见做法。

慕后森

您可以sys.path在运行时进行修改,使其包含您将使用的每个模块的目录。例如,对于 package1 发出以下语句:>>> sys.path.append(r"[package directory path]\\Parsers\\FileType1_Parsers\\package1")您也可以对包中的任何其他模块执行此操作。现在,你可以使用这个命令:from package1 import example_class希望这可以帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python