聊聊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爬虫之抓取糗事百科代码分享
Nov 06 Python
python使用7z解压apk包的方法
Apr 18 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
Feb 17 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
Django中celery的使用项目实例
Jul 07 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连接Oracle for NT 远程数据库
2006/10/09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Python 忽略warning的输出方法
2018/10/18 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
如何在django中运行scrapy框架
2020/04/22 Python
python+requests接口自动化框架的实现
2020/08/31 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
回门宴答谢词
2014/01/13 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
瘦西湖导游词
2015/02/03 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
离婚民事起诉状
2015/08/03 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
A22国内电台短波广播频率表
2022/05/10 无线电