聊聊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使用7z解压apk包的方法
Apr 18 Python
Python3实现从文件中读取指定行的方法
May 22 Python
Python中逗号的三种作用实例分析
Jun 08 Python
python和bash统计CPU利用率的方法
Jul 10 Python
详解Python使用tensorflow入门指南
Feb 09 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
python文件读取失败怎么处理
Jun 23 Python
Python matplotlib 利用随机函数生成变化图形
Apr 26 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教程 变量定义
2009/10/23 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
Js基础学习资料
2010/11/23 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Django 路由层URLconf的实现
2019/12/30 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
中学生操行评语
2014/04/24 职场文书
服装设计专业自荐信
2014/06/17 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
委托书如何写
2014/08/30 职场文书
个人委托书范文
2015/01/28 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书