繁体   English   中英

Python 包文件夹结构

[英]Python Package Folder Structure

我一直在研究如何为自定义 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

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

您可以Parsers/__init__.py添加到Parsers/__init__.py

from .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

希望这可以帮助!

暂无
暂无

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

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