簡體   English   中英

Python 項目組織從子目錄

[英]Python project organization from sub-directories

我有許多帶有邏輯組的腳本。

.
|_ database
|  |_ db.txt
|  |_ make_db.py
|
|_ accessory
|  |_ util.py
|
|_ explore_one_way
|  |_ script1.py
|
|_ explore_a_second_way
   |_ script2.py

例如,我如何從 script1.py 訪問 util.py? 除了添加到 sys.path 之外,還有其他方法還是最 Pythonic 的?

更新:這是相對無痛的。 我將__init__.py添加到附件目錄中,然后可以執行以下操作:

import sys
sys.path.insert(0, '..')
from proj import util

或者

from proj.util import some_symbol

謝謝大家。

首先,您應該為每個文件夾創建空的__init__.py文件。 然后添加您的script1.py文件的頂部,如下所示。

import sys 
sys.path.insert(0, ".")

from accessory import util.py

查看更多

你可以:

  • 添加sys.path ((-) 不是很 Pythonic vs (+) 容易)
  • 使用soft links ((-)有時會給 docker 帶來問題,而(+)你可以鏈接到目錄)。 軟鏈接是一個文件,類似於其他文件的副本,但不是真正的副本(如淺拷貝)。 該文件始終只有一份副本。
  • 使用hard links ((-)需要鏈接每個文件,沒有目錄 vs(+)沒有 docker 問題)。 如果您更改其中任何一個,硬鏈接是同步其克隆的實際副本。

如果你不喜歡__init__.pysys.path我推薦軟鏈接!

. |_ database | |_ db.txt | |_ make_db.py | |_ accessory | |_ util.py | |_ __init__.py | |_ explore_one_way | |_ script1.py | |_ explore_a_second_way |_ script2.py . |_ database | |_ db.txt | |_ make_db.py | |_ accessory | |_ util.py | |_ __init__.py | |_ explore_one_way | |_ script1.py | |_ explore_a_second_way |_ script2.py通過添加init .py 使附件成為 python package。 然后這樣做

from accessory import util

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM