当前位置: 首页 > ds >正文

不同环境下运行脚本如何解决pythonpath问题

目录

问题背景:

方法一:在 Dockerfile 中设置 PYTHONPATH:

方法二: 本地脚本内动态地设置 sys.path,以确保 Python 程序在运行时能够找到项目中的模块

注意:


问题背景:

脚本在windows环境定义 然后因为要做CI/CD,在docker(liunx环境)执行的过程中遇到了下面这个问题

ModuleNotFoundError: No module named 'Modules'

首先我检查了项目是被完全复制到docker中的 验证了Modules文件夹包括下面的文件都是存在的 那就是pythonpath无法解析的问题; 针对这种工作环境不一致的情况 有下面两种解决办法:

方法一:在 Dockerfile 中设置 PYTHONPATH

假设你的项目根目录为web-test:

ENV PYTHONPATH="/web-test"

方法二: 本地脚本内动态地设置 sys.path,以确保 Python 程序在运行时能够找到项目中的模块

将下面这段代码放到你的主入口脚本内(例如 test_main.py)就能解决无法解析pythonpath得问题 

project_root = os.path.dirname(os.path.abspath(__file__))
# 获取当前文件的绝对路径。这是指正在执行的 Python 文件的路径
sys.path.insert(0, project_root)
# 将项目根目录插入到 sys.path 的开头。这样做确保 Python 在导入模块时优先搜索项目的根目录,使得项目及其中的模块都能被正确找到和导入。
print(sys.path)

注意:

1、上面两种方法的前提是你确保docker中你复制了所有你需要的项目目录以及文件,可以借助ls命令查看;

2、其次是结合上面的方法,在脚本内导入对应自定义的方法时,选用相对路径的导入方法

http://www.xdnf.cn/news/5332.html

相关文章:

  • Cesium高度参考系统
  • Java大数据可视化在城市空气质量监测与污染溯源中的应用:GIS与实时数据流的技术融合
  • 宝蓝德中间件部署war包时,配置的绝对路径读取错误。
  • 《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-俄罗斯方块:用旋转矩阵打造经典
  • 质量、重力、引力、惯性 的本质,以及虫洞
  • 按键实现多个界面切换的方法
  • 从需求到用例的AI路径:准确率与挑战
  • PyQt5基础:QWidget类的全面解析与应用实践
  • LinkedList源码解析
  • stm32 lcd绘制波形和频谱
  • android HashMap和List该如何选择
  • Go多服务项目结构优化:为何每个服务单独设置internal目录?
  • ChatBI选型指南:主流产品技术对比与落地建议
  • 【Docker 新手入门指南】第四章:镜像加速
  • 相机Camera日志分析之八:高通Camx HAL架构opencamera三级日志详解及关键字
  • [6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)
  • JMeter 中实现 双 WebSocket(双WS)连接
  • 【Linux实践系列】:进程间通信:万字详解共享内存实现通信
  • 系统分析与设计期末复习
  • 高效全能PDF工具,支持OCR识别
  • ThinkPad T440P如何从U盘安装Ubuntu24.04系统
  • QMK键盘固件开发全解析:QMK 固件开发的最新架构和规范(2025最新版)
  • [亲测搭建可用]LoliMeow主题二次元风博客WordPress主题模板
  • Android 关闭Activity切换过渡动画
  • 栈溢出攻击最基本原理
  • 宝塔服务安装使用的保姆级教程
  • Redis 集群
  • 安装或更新 CUDA Toolkit - Ubuntu - RuntimeError
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • WPF中如何自定义控件