Python 自定义包报错 / 自定义包加入搜索路径(永久/临时)

Python 自定义包报错 / 自定义包加入搜索路径(永久/临时)

问题描述

在一个test.py文件,使用 自定包里面 的文件运行报错

请添加图片描述

from A_Package import a_study

# 调用
a_study.study()
cd B_Package
B_Package> python test.py
# Traceback (most recent call last):
#   File "test.py", line 1, in <module>
#  from A_Package import a_study
# ModuleNotFoundError: No module named 'A_Package'

出错描述:找不到自定义的包

问题处理

前提知识:
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

  • 当前的项目目录下
  • 如果不在当前项目目录下,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  • 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

请添加图片描述

一般如果是用的别人的包,如果找不到直接 pip install xxxx 即可

如果是自己定义的包,出错处理方式,有以下几种:

1、查看引用包的__init__.py文件是否在

需要查看导入的包里面的 __init__.py 是否存在,不存在需要建立一个

原有:python中的每一个.py文件称为模块,包含了__init__.py的目录称为一个

基础知识:可查看 Python基础知识之模块和包(三)

如果这种方式不行,从 Python搜索路径 上来处理

2、临时添加搜索路径

上面讲到,sys.path是搜索模块中的路径集,是一个路径数组

如果导入的包不在sys.path里面,可以通过在数组加入指定路径的方式来进行**临时添加 **这种只能做到临时添加, 带程序进程退出后便不再生效

import sys
# 加入要导入的包的全路径
sys.path.append("")

3、永久添加搜索路径

根据 Python 解析器对模块的搜索顺序,会 搜索 PYTHONPATH 变量

那么就可以通过设置Python 的环境变量

找到环境变量隐藏文件 .bashrc / .zshrc 文件

编辑该文件,然后在文件末尾 export具体的环境变量,例如我这里把我的一个项目加入到了环境变量中:

请添加图片描述

vim .bashrc
export PYTHONPATH=$PYTHONPATH:/home/hiudawn/mlpan/mvcnn_pytorch/
source  .bashrc

添加完之后,可以进入python里面,输出 sys.path 查看是否已经加入~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值