簡體   English   中英

從父目錄導入 function

[英]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

  • 從 EKFUKF_Py 的父目錄運行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM