聊聊python在linux下与windows下导入模块的区别说明


Posted in Python onMarch 03, 2021

我就废话不多说了,大家往下看吧~

P
|-A
| a.py
|-B
| b.py

文件结构如上,在windows下

a想运行b中的方法,可以直接写成

from B impot b
b.fun()

但是在linux中会出现

ModuleNotFoundError: No module named 'B'

可以通过引入sys添加路径解决

import sys
sys.path.append("/P/B")
from B impot b

在程序中为了也有良好的移植性,可以在代码中显式添加路径,

比如用os的方法:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

或者pathlib 方法:

BASE_DIR = Path(__file__).resolve().parent.parent

最后可以添加到 sys.path中

sys.path.append(str(BASE_DIR))

补充:python import导入三种方式(导入不同文件夹的文件,window和linux的区别)

import导入方式

1、导入python自有的库

import json

2、导入同级目录下的文件,比如在logindev.py导入read_config.py文件

聊聊python在linux下与windows下导入模块的区别说明

# coding = utf-8
from read_config import ReadConfig
import requests
import json
# 拼接请求参数,获取cookie,作为后续登录使用

3、导入不同级别目录下的文件:

a、windows环境

# coding = utf-8
import datetime
import allure
import pytest
import json
import sys
"""windows执行的时候,直接在系统路径上新增文件夹路径"""
sys.path.append("../common")

"""linux执行的时候,直接按照相对路径引用即可"""
from common import http_request

这段代码在linux下报如下错误:

==================================== ERRORS ====================================
_______________ ERROR collecting test_case/test_member_ticket.py _______________
ImportError while importing test module '/var/jenkins_home/workspace/pytest_allure/test_case/test_member_ticket.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test_member_ticket.py:8: in <module>
 from common import http_request
E ImportError: No module named 'common'

b、linux环境

# coding = utf-8
import datetime
import allure
import pytest
import json
import sys
"""windows执行的时候,直接在系统路径上新增文件夹路径"""
#sys.path.append("../common")

"""linux执行的时候,直接按照相对路径引用即可"""
from ..common import http_request

这段代码在windows报如下错误:

========================================================================== ERRORS ==========================================================================
__________________________________________________________ ERROR collecting test_member_ticket.py __________________________________________________________
test_member_ticket.py:8: in <module>
 from ..common import http_request
E ValueError: attempted relative import beyond top-level package
================================================================= short test summary info ==================================================================
ERROR test_member_ticket.py - ValueError: attempted relative import beyond top-level package
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
===================================================================== 1 error in 0.46s =====================================================================

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python标准异常和异常处理详解
Feb 02 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
使用python实现省市三级菜单效果
Jan 20 Python
Python中set与frozenset方法和区别详解
May 23 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
儿童学习python的一些小技巧
May 27 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
python数据爬下来保存的位置
Feb 17 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
Python 日期与时间转换的方法
Aug 01 Python
Python实现仓库管理系统
May 30 Python
python 递归相关知识总结
Mar 03 #Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 #Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 #Python
神经网络训练采用gpu设置的方式
Mar 03 #Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 #Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 #Python
python上下文管理的使用场景实例讲解
Mar 03 #Python
You might like
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
语义化 H1 标签
2008/01/14 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python入门篇之数字
2014/10/20 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
关于Python作用域自学总结
2019/06/10 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
车工岗位职责
2013/11/26 职场文书
产假请假条
2014/04/10 职场文书
学习十八大演讲稿
2014/09/15 职场文书
岳庙导游词
2015/02/04 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby