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

不同环境下运行脚本如何解决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、其次是结合上面的方法,在脚本内导入对应自定义的方法时,选用相对路径的导入方法

相关文章:

  • 【 Redis | 实战篇 缓存 】
  • 非阻塞式IO-Java NIO
  • tryhackme——Enumerating Active Directory
  • Github 2025-05-10 Rust开源项目日报 Top10
  • Webug4.0通关笔记25- 第30关SSRF
  • 【Android】文件分块上传尝试
  • vue注册用户使用v-model实现数据双向绑定
  • Kotlin 协程 vs RxJava vs 线程池:性能与场景对比
  • Spring boot 简单开发接口
  • 超详细fish-speech本地部署教程
  • LLaVA:开源多模态大语言模型深度解析
  • 数据结构中的栈与队列:原理、实现与应用
  • C++GO语言微服务和服务发现②
  • 【Bootstrap V4系列】学习入门教程之 组件-表单(Forms)高级用法(二)
  • Java数据结构——二叉树
  • 封装 RabbitMQ 消息代理交互的功能
  • 【C++ Qt】容器类(GroupBox、TabWidget)内附思维导图 通俗易懂
  • 【算法-哈希表】常见算法题的哈希表套路拆解
  • 【Linux系列】跨平台安装与配置 Vim 文本编辑器
  • SierraNet协议分析使用指导[RDMA]| 如何设置 NVMe QP 端口以进行正确解码
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险
  • 三星“七天机”质保期内屏幕漏液被要求自费维修,商家:系人为损坏
  • 【社论】职业上新,勇于“尝新”
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定