![](/img/trans.png)
[英]import a function from the parent directory `ModuleNotFoundError: No module named 'functions'`
[英]Import function from parent directory
我有一個目錄,其中包含一堆 function 和另一個文件夾,其中包含我希望能夠從終端運行的主要項目: kf_sine_demo.py
。
當我逐行運行 VS-Code 中的代碼時(使用Shift
+ Enter
),一切正常。 特別是我可以導入功能以供進一步使用:
from EKFUKF_Py import lti_disc, kf_predict, kf_update, rts_smooth
但是,當我從終端運行文件時:
python kf_sine_demo.py
我收到以下錯誤:
Traceback (most recent call last):
File "EKFUKF_Py/demo/kf_sine_demo/kf_sine_demo.py", line 16, in <module>
from EKFUKF_Py import lti_disc, kf_predict, kf_update, rts_smooth
ModuleNotFoundError: No module named 'EKFUKF_Py'
我看到了包括指定完整路徑的解決方案。 我對相對進口有強烈的偏好。
更新:
該解決方案對我最有用: https://stackoverflow.com/a/37193862/4576194 。
python -m EKFUKF_Py.demo.kf_sine_demo.kf_sine_demo
EKFUKF_Py
但是,這不是我想要的。 我希望能夠從kf_sine_demo
目錄運行python kf_sine_demo.py
並且我希望它知道它需要導入的函數位於 2 級以上。
您必須了解 python 路徑的工作原理。 這是 python 查找您嘗試導入的模塊的目錄列表,您可以使用sys.path
命令顯示它。 python 會自動添加一堆目錄,例如path\to\your_python_install\lib
,並且 python 在運行腳本時也會添加工作目錄。
這意味着當您這樣做時:
python kf_sine_demo.py
該文件的父目錄 (kf_sine_demo) 已添加到路徑中,但EKFUKF_Py
未添加。 因此 python 找不到其中的模塊。
從這里,兩個解決方案。 要么你手動添加這個目錄(我覺得它有點難看,但它有效):
sys.path.append("path/to/EKFUKF_Py")
或者,您確保始終從主目錄運行文件,例如通過main.py
文件。 從那里,您將能夠調用此目錄中的每個子模塊。
更多信息: https://www.devdungeon.com/content/python-import-syspath-and-pythonpath-tutorial
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.