聊聊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实现的简单抽奖系统实例
May 22 Python
深入理解Python中range和xrange的区别
Nov 26 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 Python
利用python实现逐步回归
Feb 24 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
pytorch SENet实现案例
Jun 24 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 06 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并发访问实例代码
2012/09/06 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
php之curl设置超时实例
2014/11/03 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
Python实现二分法算法实例
2015/02/02 Python
Python多线程正确用法实例解析
2020/05/30 Python
利用Python优雅的登录校园网
2020/10/21 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
廉洁使者实施方案
2014/03/29 职场文书
师德师风整改措施
2014/10/24 职场文书
搞笑老公保证书
2015/02/26 职场文书
法制教育观后感
2015/06/17 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript