亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

導入錯誤:無法導入名稱(未知位置)

導入錯誤:無法導入名稱(未知位置)

MYYA 2023-07-11 16:54:58
項目結構my_package├── my_package│? ?├── __init__.py│? ?└── my_module.py└── setup.py該模塊my_module.py有一個func我試圖導入的函數。該setup.py文件具有以下內容。from setuptools import setup, find_packagessetup(? ? name='my_package',? ? packages=find_packages(where='my_package'),? ? version='1.0')導入API我正在安裝該軟件包:virtualenv --python=/usr/bin/python3.8 venvsource venv/bin/activatepython my_package/setup.py install然后使用以下命令導入它:import my_packagefrom my_package import my_module但是,第二次導入失敗,并顯示:ImportError: cannot import name 'my_module' from 'my_package' (unknown location)此外,運行dir(my_package)顯示該my_module名稱確實沒有被導入。 ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

您正在test.py目錄的父目錄中運行腳本my_package。因此,test.py將嘗試將my_package子目錄作為包/模塊導入,而不是您安裝的包。您將需要移動到不包含源代碼的目錄,然后運行測試。這可以像testmy_package主目錄的子目錄中運行它一樣簡單。
只需確保您cd明確進入該目錄,而不是使用完整路徑運行它(例如,python3.8 my_package/test/test.py,因為那樣它仍然會導入錯誤的my_package.

其原因(也是問題的原因)是 Pythonsys.path在開始時自動將當前工作目錄包含在 , 中,因此會嘗試將主my_package目錄作為包導入。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號