[英]How to add own python modules to runtime environment
我的 python 項目由許多模塊組成,相互之間有導入語句。 在我的 Eclipse PyDev 環境中,這些導入語句運行良好,但是當將其移植到我的 Raspberry 時,運行時環境無法加載相關模塊。
我已經配置了 PYTHONPATH 以便我的項目的根目錄 (/home/pi/Desktop/Projects/Catatumbo) 列在sys.path
:
['/var/www/upload/Projects/Catatumbo',
'/home/pi/Desktop/Projects/Catatumbo',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-arm-linux-gnueabihf',
'/usr/lib/python3.5/lib-dynload',
'/home/pi/.local/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages']
項目結構如下:
-core
--adafruit
---forecast (That's where the utility class resides)
-forecast
--adafruit (That's where the script resides)
雖然通過以下方式從項目根目錄啟動腳本:
sudo python3 forecast/adafruit/adafruit_forecast.py
仍然導致以下錯誤:
File "forecast/adafruit/adafruit_forecast.py", line 35, in <module>
from core.adafruit.forecast.forecast_colors import ForecastNeoPixelColors
ImportError: No module named 'core'
感謝幫助!
通過閱讀這篇有用的文章, Kaya 的評論使我做出了決定:
相對導入使用到要導入的所需模塊的相對路徑(從當前模塊的路徑開始)。 有兩種類型的相對導入:
顯式相對導入遵循 from 格式。 導入 X,其中以 dots 為前綴。 表示向上遍歷多少個目錄。 一個點。 對應當前目錄; 兩個點.. 表示向上一個文件夾; 等等。一個隱式的相對導入就好像當前目錄是 sys.path 的一部分一樣。 隱式相對導入僅在 Python 2 中受支持。它們在 PYTHON 3 中不受支持。
這樣做,您將遇到'Parent module'' not loaded, cannot perform relative import' 的問題。 將腳本作為模塊運行將最終解決問題:
Use python -m package.module instead of python package/module.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.