【实测】django平台启动某脚本时的引入问题 (一期自动化平台的同学必看!)

简介: 【实测】django平台启动某脚本时的引入问题 (一期自动化平台的同学必看!)

前言:这是一个基础,a文件引入b模块的文件,在python中再简单不过。但是在django平台上去执行这个文件的时候,就会莫名的报错找不到b模块文件。这种问题在一些特殊需求的时候是属于一种疑难杂症的。


本篇文章,就来给大家好好研究和解决一下这个问题。


先来看demo:

【DEMO: 正常无django导入】

文件结构:

640.png


a.py:

640.png


b.py:

640.png


在a文件位置运行a文件:

640.png


可以看到是成功导入的。


然后我们换个执行位置,再运行a文件试试:

640.png


可以看到仍然是成功导入的。


【DEMO: django项目内】

然后我们引入django平台试试,文件目录如下:

640.png


注意,此时的a文件和b文件的位置已经比较复杂了。

然后我们先手动在终端运行a文件来测试(需要采用不同写法导入b):

  1.  

在a文件位置运行a:

640.png


如上图所示,此刻需要用sys.path.append方法临时添加上级目录,才能正常导入,其他写法全部报错。


2. 在其他位置运行a:

640.png


如图所示,用sys的方案依然可以成功导入,其他写法基本全会报错。


3. pycharm启动平台,从平台上接口触发的方式,调用subprocess.call方法来使用新进程执行a文件:

640.png

640.png


如图所示,只有这种写法可以成功导入。


4. 在终端上启动django平台,然后再次用接口触发新进程的方式执行a:

640.png


如图,依然可以成功导入。


从这里我们可以得出结论,平台执行 等价于 于在django根目录下使用python命令直接执行。因为manage.py的位置也就是根目录,是django默认命令寻址的初始地。


那么现在问题来了,a脚本的单独本地执行也就是在a文件位置上执行。和平台执行 这俩种情况,能不能让代码不变的方式同时满足呢???


毕竟我们假设a.py文件 就是 自动化脚本,它既需要本地调试,又需要在平台上接口触发的方式执行。


好,公布答案:

640.png


这样的写法就可以同时让a.py成功导入b的内容了。


然后我们进阶一下,复杂化一点目录层级:(和培训版本自动化测试平台同样目录设计了)

640.png


结果:平台调用成功

640.png


本地调试成功:

640.png


可以看到,这样的方案,仍然成功导入了。


然后我们就要再复杂一点:(和培训版本自动化测试平台的动态目录一致了)

注意,因为client_50这个50并不确定,所以要做成动态获取:


并且我还打印了下这个 __file__  大家可以来直观的看到这个__file__是个什么东西。(用re正则来获取这个50,比用split切片要靠谱)

640.png


import sys,re
print(str(__file__))
try:
    sys.path.append( 'MyClient/client_%s'% re.findall(r'client_(.\d?)', str(__file__))[0] )
except:
    sys.path.append('..')
from public.b import b
b()


结果如下:

平台调用:

640.png


本地调试:

640.png


如图所示,两种情况均已成功导入。

大家也明白了,两种情况下,__file__的值并不相同,所以要用一个try/except的写法。


欢迎关注:测试开发干货

进群加v:qingwanjianhua

相关文章
|
4月前
|
API 调度 虚拟化
VMware Cloud Foundation Automation 9.0.1.0 发布 - 私有云自动化平台
VMware Cloud Foundation Automation 9.0.1.0 发布 - 私有云自动化平台
248 3
VMware Cloud Foundation Automation 9.0.1.0 发布 - 私有云自动化平台
|
10月前
|
安全 Linux 虚拟化
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
291 0
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
|
4月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
8月前
|
人工智能 搜索推荐 测试技术
通义灵码 Agent+MCP:打造自动化菜品推荐平台,从需求到部署实现全流程创新
通过通义灵码编程智能体模式和 MCP 的集成,开发者可以高效构建在线菜品推荐网站。智能体模式大幅提升了开发效率,MCP 服务则为功能扩展提供了无限可能。
|
6月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
8月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
601 1
|
9月前
|
JavaScript 搜索推荐 前端开发
通义灵码2.5智能体模式联合MCP:打造自动化菜品推荐平台,实现从需求到部署的全流程创新
本项目利用通义灵码2.5的智能体模式与MCP服务,构建在线点餐推荐网站。基于Qwen3模型,实现从需求到代码生成的全流程自动化,集成“今天吃什么”和EdgeOne MCP服务,提供个性化推荐、偏好管理等功能。技术架构采用React/Vue.js前端与Node.js后端,结合MCP工具链简化开发。项目涵盖功能测试、部署及未来扩展方向,如餐厅推荐、语音交互等,展示高效开发与灵活扩展能力。
|
存储 人工智能 Kubernetes
VMware Cloud Foundation Automation 9.0 发布 - 私有云自动化平台
VMware Cloud Foundation Automation 9.0 发布 - 私有云自动化平台
117 0
|
11月前
|
运维 安全 网络安全
自动化与统一管理:Websoft9 平台为教师提供的一站式解决方案
教育场景常面临资源分散、技术门槛高、资源利用低效及安全风险等问题。Websoft9 提供自动化部署与统一管理方案,通过预集成应用模板库、容器化资源隔离和智能运维监控等技术,大幅缩短环境搭建时间,提升资源利用率并保障数据安全。其典型应用场景包括混合教学环境搭建、科研项目管理和实验课程弹性扩展,助力高校降低成本、提高效率。Websoft9 的图形化界面降低技术门槛,支持自定义开发,推动教育数字化转型,未来有望成为教学生产力提升的底层基座。
231 6