本地导入封装的模块 在docker内报错ImportError

本地封装了一个login方法 在写testcase的时候去复用这个方法 但是进入docker运行的时候一直报上面的错误

目录

出现的原因:

解决方法:

[1. 根据docker的路径写绝对路径](#1. 根据docker的路径写绝对路径)

[2. 用sys 加入path到code](#2. 用sys 加入path到code)

作用:

好处:


出现的原因:

上家公司是在liunx环境下写的脚本 运行脚本的docker环境也是linux所以不会出现这个问题 但是这家公司是在本地windows环境写的脚本 所以到docker环境中无法识别

解决方法:

1. 根据docker的路径写绝对路径

这个比较简单就不给示例了

注意: 如果是和我一样的情况 尽量不要用这个方法 因为自己机器上和docker的目录结构是不一样的 那样会导致无法在本地调试脚本 如果要用这种方法就要注意开发和调试都去docker里面进行

2. 用sys 加入path到code

python 复制代码
import sys
from selenium.webdriver.chrome.service import Service
# 获取当前文件的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取项目根目录
project_root = os.path.abspath(os.path.join(current_dir, '..', '..'))
# 将项目根目录添加到 sys.path 中
sys.path.insert(0, project_root)
# 将项目根目录插入到 sys.path 列表的开头,优先搜索该目录。这使得 Python 可以找到位于项目根目录中的模块或包。
from PANA.Common.Login import *

具体来说,这里的sys.path 是一个 Python 列表,包含了 Python 解释器在执行 import 语句时搜索模块的目录。

作用:

通过将项目根目录动态地添加到 sys.path:

  1. 模块搜索路径优先:优先在项目根目录中搜索模块,使得脚本能够正确导入模块或包,尤其是当模块或包不在默认的模块搜索路径中时。
  2. 灵活性:即使项目结构发生变化,只要相对路径层级保持不变(例如从当前目录向上两级到项目根目录),导入模块的代码仍然可以正常工作。
  3. 自动化测试和开发 :在开发和测试过程中,动态修改 sys.path 是一种通用方法,确保脚本总是能够找到正确的模块。

好处:

通过这种方式,sys.path 的动态修改不仅在单个脚本中有效,对整个项目结构都有效。这是确保复杂项目中模块导入正确的一种常见模式,特别是在开发和测试环境下,它提供了高度的灵活性和可控性。

相关推荐
江屿风2 小时前
【Linux系统】【从菜鸟驿站到操作系统:一节课打通Linux重定向与缓冲区真相】流食般投喂
linux·运维·服务器·开发语言·笔记
今天要早睡_2 小时前
Linux 基础指令速查:从 ls 到 tar 的常用命令全解析
linux·运维·chrome
吴声子夜歌3 小时前
Docker入门与实战——核心概念与安装配置
运维·docker·容器
XiaoMaqqqq13 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
huainingning14 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘14 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项14 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
Lsetea15 小时前
OpenSSL verify报unhandled critical extension:error 34与关键扩展排查
运维·https·ssl证书·openssl·证书链
guo_wen_qiang15 小时前
docker的备份与迁移
运维·docker·容器
Ruiery16 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器