聊聊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实现ipsec开权限实例
Nov 11 Python
python实现端口转发器的方法
Mar 13 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
python实现发送邮件功能代码
Dec 14 Python
python数据封装json格式数据
Mar 04 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 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中一个完整表单处理实现代码
2011/11/10 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP创建XML接口示例
2019/07/04 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
深入理解Python变量与常量
2016/06/02 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
关于学习的演讲稿
2014/05/10 职场文书
优秀员工演讲稿
2014/05/19 职场文书
技校毕业生自荐信
2014/06/03 职场文书
天气温馨提示语
2015/07/14 职场文书
公司考勤管理制度
2015/08/04 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
python实现局部图像放大
2021/11/17 Python
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
实现GO语言对数组切片去重
2022/04/20 Golang