聊聊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中List的sort方法指南
Sep 01 Python
python实现从ftp服务器下载文件的方法
Apr 30 Python
Python实现的Excel文件读写类
Jul 30 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python统计字符串中字母出现次数代码实例
Mar 02 Python
详解Python3中的 input() 函数
Mar 18 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
运行Python编写的程序方法实例
Oct 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
PHP+DBM的同学录程序(5)
2006/10/09 PHP
php采集速度探究总结(原创)
2008/04/18 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
python 正则式使用心得
2009/05/07 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python正则表达式如何匹配中文
2020/05/27 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
旅游网创业计划书
2014/01/31 职场文书
《称象》教学反思
2014/04/25 职场文书
家庭困难证明
2014/10/12 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
结婚典礼致辞
2015/07/28 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python