聊聊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之折腾一下目录
Oct 24 Python
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
状态机的概念和在Python下使用状态机的教程
Apr 11 Python
Python Property属性的2种用法
Jun 21 Python
python中解析json格式文件的方法示例
May 03 Python
用Python shell简化开发
Aug 08 Python
Python 读写文件的操作代码
Sep 20 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
Python文件读写w+和r+区别解析
Mar 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
pycharm设置注释颜色的方法
2018/05/23 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python 提取文件指定列的方法示例
2019/08/07 Python
python中class的定义及使用教程
2019/09/18 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
爱心捐款倡议书范文
2014/05/12 职场文书
教师节老师寄语
2015/05/28 职场文书
小人国观后感
2015/06/11 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫