python import 路径_Python 从相对路径下import的方法
例如我们有如下结构的文件:
pkg/
__init__.py
libs/
some_lib.py
__init__.py
components/
code.py
__init__.py
如果我们想要在code.py中调用libs/some_lib.py这个module,比如使用相对调用:from ..libs.some_lib import something,仅仅在package中加上__init__.py是不够的。python会返回ValueError: Attempted relative import in non-package这个错误。那么这个问题如何解决呢?
有以下解决方法:
将当前路径加入sys.path
考虑到compontent和libs是处于同一级别的文件夹,我们可以直接在code.py中加入如下代码来把当前文件夹的母文件夹加入系统路径。
import sys
from os import path
sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) )
或者如下(这种情况对任何关系的文件夹都适用,只要我们在lib_path中给出到达该文件夹的绝对路径):
import os, sys
lib_path = os.path.abspath(os.path.join('..'))
sys.path.append(lib_path)
这样我们就可以用from libs.some_lib import something来import了。
以package模式执行该代码:
python -m pkg.components.code
然后我们就可以用from ..libs.some_lib import something 来import了。
注意这里不需要.py作为文件结尾。
总结
我们实际上可以结合这两种方法:
if __name__ == '__main__':
if __package__ is None:
import sys
from os import path
sys.path.append( )
from libs.some_lib import something
else:
from ..libs.some_lib import something
以上这篇Python 从相对路径下import的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
python import 路径_Python 从相对路径下import的方法相关推荐
- python 自定义模块_Python 自定义模块路径
问题: 假设我们自己写了一个名为 log_config.py 的日志记录程序模块.此模块会被其他程序所引用,如下例子. import log_config logger = log_config.lo ...
- python中查看相对路径_python提取相对路径
原博文 2018-01-30 16:47 − 原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('======== ...
- python替换img的路径为新的路径_python – Django |连接路径位于基本路径组件之外{%static img.thumbnail.url%},错误400与whitenoise...
我已经完成了我在Django的第一个应用程序并且工作得很好,但是因为我设置了DEGUG = False,所以仍然有预部署问题- 这只是在模板中显示图像- T_T 我正在使用它,但现在当我使用white ...
- python学画画_python学画画(下)
下载W3Cschool手机App,0基础随时随地学编程导语 这大概是去年深度学习最火的应用之一了吧,利用神经网络将世界名画的画风迁移到任意一张普通的图片上. 还是先放图! 左边是待转换图片,右边是供以 ...
- python添加时间戳_Python 给某个文件名添加时间戳的方法
Python 给某个文件名添加时间戳的方法 发布时间:2020-09-20 18:25:15 来源:脚本之家 阅读:87 作者:cheney康 问题描述: 1.(先添加时间戳,再复制移动,两个文件加下 ...
- python 字符串替换_python字符串替换第一个字符串的方法
Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '1234567 ...
- 电脑python安装库_Python安装第三方库的3种方法 -电脑资料
这篇文章主要介绍了Python安装第三方库的3种方法,本文讲解了通过setuptools来安装python模块.通过pip来安装python模块.直接从网上下载下可执行文件来安装三种方法,需要的朋友可 ...
- python 收发邮件_python发送各类邮件的主要基本方法
利用python实现基本的邮件发送. 感谢以下博客的整理,本人在学习的同时也做了一些整理 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: ...
- python字符串数组_python将字符串转换成数组的方法
Python 这篇文章主要介绍了Python __setattr__. __getattr__. __delattr__.__call__用法示例,本文分别对这几个魔法方法做了讲解,需要的朋友可以参考 ...
最新文章
- mysql 1236_Mysql主从同步Last_IO_Errno:1236错误解决方法
- (转) Java线程同步阻塞, sleep(), suspend(), resume(), yield(), wait(), notify()
- 四种数据持久化方式(上) :属性列表与归档解档
- 把一个中文日期时间格式字符串转为日期时间
- WebGL学习(1) - 三角形
- 格式化输出字符串变量
- mysql——JDBC
- zookeeper专题:使用zookeeper客户端实现动态监听节点并获取数据
- Atitit 图像处理 公共模块 矩阵扫描器
- SAP MM模块之批次管理
- 基于C#的在线语音识别软件开发
- 公文排版插件for Word/WPS【快点公文助手——让公文排版更快一点】
- java.lang.NumberFormatException For input string 错误及解决办法
- 自媒体是如何赚钱的?分享如何做自媒体能赚到钱!
- sql server 替换字段中的部分字符,替换指定字符的方法
- 合伙人制度是梦想、价值观和利益的捆绑
- C语言入门最基础教学(编译器下载)
- 高速视觉筛选机PCI Express实时运动控制卡XPCIE1028
- php arrayiteratoer,手动去除uTorrent中广告的步骤(V3.4.9依然有效)
- 移动端布局js动态计算rem