簡體   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