第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何正確地動(dòng)態(tài)導(dǎo)入包中的模塊以進(jìn)行開發(fā)/測(cè)試

如何正確地動(dòng)態(tài)導(dǎo)入包中的模塊以進(jìn)行開發(fā)/測(cè)試

慕標(biāo)琳琳 2023-02-07 14:55:08
我制作了一個(gè)包含很多包和模塊的應(yīng)用程序。我正在開發(fā)這些包(在它們的目錄中),并且由于我在包目錄中執(zhí)行文件,因此模塊/包的導(dǎo)入路徑發(fā)生了變化。例如,該項(xiàng)目看起來有點(diǎn)像這樣......├── app.py└── utils    ├── database.py    └── robot        ├── __init__.py        ├── run.py        ├── recognition.py        └── housekeeping.py如果我執(zhí)行python3 app.py則import utils.database有效。但是,如果我在包中運(yùn)行python3 run.py則無效。import utils.database我想知道如何執(zhí)行函數(shù)并導(dǎo)入模塊/包而不會(huì)出錯(cuò)。我有這個(gè)工作,但我認(rèn)為這是不對(duì)的。到目前為止,我已經(jīng)嘗試__name__ == "__main__"在每個(gè)主.py文件中使用 using 和 using sys.path.append,但我覺得必須有一種更簡(jiǎn)單、更好看的方法。這就是里面的run.py樣子,我也必須在里面做同樣的事情database.py,這是最好的方法嗎?if __name__ == "__main__":    import sys    sys.path.append('../../')from utils.robot.recognition import *from utils.robot.housekeeping import *import utils.database as db
查看完整描述

1 回答

?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

$PYTHONPATH環(huán)境變量設(shè)置為包含 的目錄utils,然后您的導(dǎo)入將起作用。

切勿直接運(yùn)行包中包含的模塊。如果同樣直接運(yùn)行,也可以從包中導(dǎo)入,這是有問題的,因?yàn)檫@樣在解釋器中就會(huì)有模塊的兩個(gè)副本,這肯定會(huì)造成混淆。

相反,使用-m解釋器選項(xiàng):

python -m utils.robot.run

或者,如果您永遠(yuǎn)不需要從其他模塊導(dǎo)入 run.py,則可以從包中完全刪除該文件并將其保存在單獨(dú)的“腳本”目錄中,然后您就不需要使用-m. 但是您仍然需要設(shè)置 sys.path,或者$PYTHONPATH像以前一樣使用,或者通過執(zhí)行 sys.path 操作。如果您選擇執(zhí)行 sys.path 操作,那么無論當(dāng)前工作目錄是什么,您都應(yīng)該讓它工作:

 sys.path.append(os.path.join(os.path.dirname(__file__), '../../'))


查看完整回答
反對(duì) 回復(fù) 2023-02-07
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)