我的python项目由相互之间带有import语句的多个模块组成。在我的Eclipse PyDev环境中,这些导入语句运行良好,但是当将其移植到我的Raspberry时,运行时环境无法加载相关模块。
我已经配置了PYTHONPATH,以便在sys.path
中列出我的项目的根目录(/ home / pi / Desktop / Projects / Catatumbo):
['/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'
感谢帮助!
答案 0 :(得分:0)
卡亚(Kaya)的话使我读了这篇有帮助的article:
相对导入使用相对路径(从当前模块的路径开始)到要导入的所需模块。那里有两个 相对进口的类型:
显式相对导入遵循的格式。 导入X,其中以点作为前缀。表明 向上遍历多少个目录。一个点。对应 到当前目录;两个点..表示一个文件夹向上;等 隐式相对导入的编写方式就像当前目录是 sys.path的一部分。仅在以下情况下支持隐式相对导入 Python2。PYTHON3不支持它们。
这样做,您将遇到'Parent module '' not loaded, cannot perform relative import'问题。将脚本作为模块运行最终可以解决问题:
Use python -m package.module instead of python package/module.py