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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PyCharm 導(dǎo)入與解釋器

PyCharm 導(dǎo)入與解釋器

慕容3067478 2023-12-08 17:21:43
PyCharm 項目結(jié)構(gòu)如下:testImport    target        __init__.py        script_1.py        script_2.py內(nèi)容如下:#script_1.pyimport datetimenow_ts = datetime.datetime.now()#script_2.pyfrom script_1 import now_tsprint('Now: {}'.format(now_ts))PyCharm 要求我更正script_2.py文件中的導(dǎo)入行并使用from target.script_1 import now_ts. 一旦我嘗試執(zhí)行,~/testImport: ./target/script_2.py我就會得到ModuleNotFoundError: No module named 'target'。PyCharm 怎么可能建議錯誤的解決方案,或者是否發(fā)生了我不知道的事情?
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

PyCharm 建議可能是因為 IDE 認為您的target文件夾是一個模塊。模塊中包含可執(zhí)行腳本被視為反模式。

我對此以及任何其他提議的主要?機械的調(diào)整都是-1。唯一的用例似乎是運行恰好位于模塊目錄內(nèi)的腳本,我一直將其視為反模式。為了讓我改變主意,你必須讓我相信事實并非如此。

我建議您更改項目的結(jié)構(gòu),使主要邏輯位于模塊中,而可執(zhí)行文件位于模塊之外,即:

testImport
├──?script_1.py
└──?target
????└──?my_logic.py

在你的 script_1.py 中:

from?target.my_logic?import?now_ts

注意:當(dāng)然,我在這里只是使用對權(quán)威的呼吁作為論據(jù)。根據(jù)您的用例,繼續(xù)您正在開發(fā)的方式可能會更好。在這種情況下,只需忽略 IDE 建議即可。


查看完整回答
反對 回復(fù) 2023-12-08
?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

關(guān)鍵是,當(dāng)您以默認方式運行腳本時python ./target/script_2.py,解釋器將被視為script_2主模塊,不會讓您找到上層文件夾。


您可以通過以下方式來避免運行ModuleNotFoundError(僅當(dāng)您清楚地了解自己在做什么時,不要在大型項目中使用):


在~/testImport運行中python -m target.script_2

script_2.py 添加在頂部

__package__ = "target.script_2"

script_2.py 添加在頂部

if __name__ == "__main__":

    import sys

    import os

    sys.path.insert(0, os.path.abspath(os.curdir))

進入~/testImport并運行python ./target/script_2.py


如果有人能幫助我糾正我不自然的英語,我將非常感激。


查看完整回答
反對 回復(fù) 2023-12-08
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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