聊聊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数据结构树和二叉树简介
Apr 29 Python
Python列表(list)常用操作方法小结
Feb 02 Python
python+pyqt实现右下角弹出框
Oct 26 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python中count函数简单的实例讲解
Feb 06 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
浅析php创建者模式
2014/11/25 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
深入浅出学习python装饰器
2017/09/29 Python
Python全排列操作实例分析
2018/07/24 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python 使用type来定义类的实现
2019/11/19 Python
Python 项目转化为so文件实例
2019/12/23 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
计算机本科生自荐信
2013/10/15 职场文书
会计专业自我鉴定
2014/02/10 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
委托书的写法
2014/08/30 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
mysql部分操作
2021/04/05 MySQL
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫