聊聊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多线程编程方式分析示例详解
Dec 06 Python
python网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
django fernet fields字段加密实践详解
Aug 12 Python
OpenCV中VideoCapture类的使用详解
Feb 14 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 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
php自动获取目录下的模板的代码
2010/08/08 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python实现的双色球生成功能示例
2017/12/18 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
如何使用repr调试python程序
2020/02/28 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
应届生法律求职信
2013/10/22 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
中国梦团日活动总结
2014/07/07 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
JS封装cavans多种滤镜组件
2022/02/15 Javascript
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技