聊聊python在linux下与windows下导入模块的区别说明
我就废话不多说了,大家往下看吧~
P
|-A
|a.py
|-B
|b.py
文件结构如上,在windows下
a想运行b中的方法,可以直接写成
fromBimpotb b.fun()
但是在linux中会出现
ModuleNotFoundError:Nomodulenamed'B'
可以通过引入sys添加路径解决
importsys sys.path.append("/P/B") fromBimpotb
在程序中为了也有良好的移植性,可以在代码中显式添加路径,
比如用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))
补充:pythonimport导入三种方式(导入不同文件夹的文件,window和linux的区别)
import导入方式
1、导入python自有的库
importjson
2、导入同级目录下的文件,比如在logindev.py导入read_config.py文件
#coding=utf-8 fromread_configimportReadConfig importrequests importjson #拼接请求参数,获取cookie,作为后续登录使用
3、导入不同级别目录下的文件:
a、windows环境
#coding=utf-8 importdatetime importallure importpytest importjson importsys """windows执行的时候,直接在系统路径上新增文件夹路径""" sys.path.append("../common") """linux执行的时候,直接按照相对路径引用即可""" fromcommonimporthttp_request
这段代码在linux下报如下错误:
====================================ERRORS==================================== _______________ERRORcollectingtest_case/test_member_ticket.py_______________ ImportErrorwhileimportingtestmodule'/var/jenkins_home/workspace/pytest_allure/test_case/test_member_ticket.py'. Hint:makesureyourtestmodules/packageshavevalidPythonnames. Traceback: test_member_ticket.py:8:infromcommonimporthttp_request EImportError:Nomodulenamed'common'
b、linux环境
#coding=utf-8 importdatetime importallure importpytest importjson importsys """windows执行的时候,直接在系统路径上新增文件夹路径""" #sys.path.append("../common") """linux执行的时候,直接按照相对路径引用即可""" from..commonimporthttp_request
这段代码在windows报如下错误:
==========================================================================ERRORS========================================================================== __________________________________________________________ERRORcollectingtest_member_ticket.py__________________________________________________________ test_member_ticket.py:8:infrom..commonimporthttp_request EValueError:attemptedrelativeimportbeyondtop-levelpackage =================================================================shorttestsummaryinfo================================================================== ERRORtest_member_ticket.py-ValueError:attemptedrelativeimportbeyondtop-levelpackage !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Interrupted:1errorduringcollection!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! =====================================================================1errorin0.46s=====================================================================
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。