聊聊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操作CouchDB的方法
Oct 08 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
Python多进程fork()函数详解
Feb 22 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
python多线程实现TCP服务端
Sep 03 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
Python爬虫如何破解JS加密的Cookie
Nov 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
JS实现文字向下滚动完整实例
2015/02/06 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python使用遗传算法解决最大流问题
2018/01/29 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
selenium自动化测试入门实战
2020/12/21 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
主持词开场白
2014/03/17 职场文书
水电施工员岗位职责
2015/04/11 职场文书
安全承诺书格式范本
2015/04/28 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
郭明义观后感
2015/06/08 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
对Keras自带Loss Function的深入研究
2021/05/25 Python
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS