聊聊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中if语句的嵌套用法
May 14 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
Python之reload流程实例代码解析
Jan 29 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
python pandas修改列属性的方法详解
Jun 09 Python
linux查找当前python解释器的位置方法
Feb 20 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Python内置函数locals和globals对比
Apr 28 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
Pandas的Apply函数具体使用
Jul 21 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修改密码方法总结
2008/03/25 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
python cv2截取不规则区域图片实例
2019/12/21 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
nohup的用法
2012/11/26 面试题
2014年两会学习心得范例
2014/03/17 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
学校三节实施方案
2014/06/09 职场文书
实习计划书范文
2015/01/16 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
教师研修随笔感言
2015/11/18 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
JavaScript的Set数据结构详解
2022/02/18 Javascript