如何将自己的python模块添加到运行时环境

时间:2019-11-24 18:19:31

标签: python python-3.x

我的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'

感谢帮助!

1 个答案:

答案 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