【python】linux和pycharm导入自定义模块或包的方法(各种导包错误的终极解决方案)

获取路径的方法

结构展示:
在这里插入图片描述

# -*- coding:utf-8 -*-
'''
@Author: knocky
@Blog: https://blog.csdn.net/zzx188891020
@E-mail: 188891020@qq.com
@File: main.py
@CreateTime: 2020/5/18 20:03
'''
import sys, os
print('__file__ >>>  %s' %__file__)
print('sys.argv[0] >>> %s' % sys.argv[0])  # 获取当前主程序路径
print("os.path.abspath('.') >>>  %s" % os.path.abspath('.'))  # 工作目录绝对路径
print("os.getcwd() >>>  %s" % os.getcwd())  # 工作目录绝对路径
print("os.path.abspath('test.txt')  %s" % os.path.abspath('test.txt'))  # 工作目录绝对路径+文件名   即使文件不存在也会拼接
print("os.path.abspath('..') >>>  %s" % os.path.abspath('..'))  # 工作目录绝对路径的父路径
print("os.path.abspath(os.curdir) >>>  %s" % os.path.abspath(os.curdir))  # 工作目录绝对路径

# =====================效果展示=====================
# __file__ >>>  D:/Python file/pycharm file/Test_package/package/package1/main.py
# sys.argv[0] >>> D:/Python file/pycharm file/Test_package/package/package1/main.py
# os.path.abspath('.') >>>  D:\Python file\pycharm file\Test_package\package\package1
# os.getcwd() >>>  D:\Python file\pycharm file\Test_package\package\package1
# os.path.abspath('test.txt')  D:\Python file\pycharm file\Test_package\package\package1\test.txt
# os.path.abspath('..') >>>  D:\Python file\pycharm file\Test_package\package
# os.path.abspath(os.curdir) >>>  D:\Python file\pycharm file\Test_package\package\package1


如果代码看不清楚就看图片:
在这里插入图片描述

导包前的准备工作:

由于linux无法像pycharm一样设置根目录,所以需要添加进系统列表
在这里插入图片描述
各种添加环境变量的方法如下:

# linux下无法像python一样设置Sources Root
# 所以需要使用sys.path.append()添加根目录进系统路径

# 所以获取根目录有以下几种方法:
import sys, os
path = os.path.abspath('../..')
path1 =os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
print('path:',path)
print('path1:',path1)
sys.path.append(path)  # 会追加到列表最尾部
print(sys.path)

# =====================效果展示=====================
# path: D:\Python file\pycharm file\Test_package
# path1: D:/Python file/pycharm file/Test_package

# ['D:\\Python file\\pycharm file\\Test_package\\package\\package1',
#  'D:\\Python file\\pycharm file\\Test_package', 
# 'D:\\ProgramData\\Anaconda3\\python37.zip', 
# 'D:\\ProgramData\\Anaconda3\\DLLs',
#  'D:\\ProgramData\\Anaconda3\\lib',
#  'D:\\ProgramData\\Anaconda3', 
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python37\\site-packages', 
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python37\\site-packages\\win32', 
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python37\\site-packages\\win32\\lib', 
# 'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python37\\site-packages\\Pythonwin',
# 'D:\\ProgramData\\Anaconda3\\lib\\site-packages', 
# 'D:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32', 
# 'D:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32\\lib', 
# 'D:\\ProgramData\\Anaconda3\\lib\\site-packages\\Pythonwin', 
# 'D:\\Program Files\\JetBrains\\PyCharm 2018.1.2\\helpers\\pycharm_matplotlib_backend', 
# 'D:\\Python file\\pycharm file\\Test_package' ]

运行效果如下
在这里插入图片描述

跨模块导包

# 官方推荐的导包方式,如果是跨包导入,最好使用从顶层向下的方式导入
# 一般来说顶层是存在目录中的,通过sys.path查看,如果不存在,就添加进去
import sys, os
path = os.path.abspath('../..') # 向上两层,多层按需修改
sys.path.append(path)  # 会追加到列表最尾部
from conf.conf1.config import TEST_CONF_DIC  # 先追加路径,然后再导包
print(TEST_CONF_DIC['name'])  # 我自己测试的内容
print(sys.path)  # 查看系统path是否添加成功,append的结果一般在末尾

文件内容截图
在这里插入图片描述

在这里插入图片描述

说的再多也没用,再看不懂,就自己下载代码查看吧。写的好,就点个赞吧,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值