聊聊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调用java的Webservice示例
Mar 10 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python中redis的安装和使用
Dec 04 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
基于python历史天气采集的分析
Feb 14 Python
python mysql断开重连的实现方法
Jul 26 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
python实现图像全景拼接
Mar 27 Python
python 实时调取摄像头的示例代码
Nov 25 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
javascript常用方法总结
2015/05/14 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python验证码识别处理实例
2015/12/28 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
神经网络python源码分享
2017/12/15 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python 日期排序的实例代码
2019/07/11 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
使用python turtle画高达
2020/01/19 Python
python实现人机猜拳小游戏
2020/02/03 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
初中升旗仪式演讲稿
2014/05/08 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
博士生专家推荐信
2014/09/26 职场文书
公司离职证明范本
2014/10/17 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
PHP获取学生成绩的方法
2021/11/17 PHP
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js