聊聊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中使用不同编码读写txt文件详解
May 28 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
详解Python3定时器任务代码
Sep 23 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
python异常处理和日志处理方式
Dec 24 Python
python+gdal+遥感图像拼接(mosaic)的实例
Mar 10 Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 Python
基于python实现地址和经纬度转换
May 19 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP中的日期处理方法集锦
2007/01/02 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python读写配置文件的方法
2015/06/03 Python
Python入门必须知道的11个知识点
2018/03/21 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
销售找工作求职信
2013/12/20 职场文书
会计专业自我评价
2014/02/12 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
担保书怎么写 ?
2019/04/22 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js