[英]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__.py
和sys.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.