Python导包、模块报错的问题
import报错No module named "xxx"的问题
如何将指定目录作为项目根目录,让项目根目录下的包/模块都可以直接导入?(linux下)
Python导入模块时,解释器如何定位模块:
1.当前目录
2.内置模块列表
3.sys.path列表的目录
由于python没有定位到模块目录时出现的No module named "xxx"问题,大概有两种解决思路:
1.在sys.path永久加入需要导入的模块的父目录;2.每次要导入时在执行的py文件中执行sys.path.append方法将需要导入的模块的父目录加入到sys.path
问题和解决示例:
永久将某个目录加入到sys.path让这个目录下的py文件在导包时python的finder可以直接查找到
Desktop/pytest/下两个各包含一个py文件的文件夹:test/test.py path_test/path_test.py
# test.py
print("test")
# path_test.py
from test import test
目标:在目录path_test
下执行python3 path_test.py
,应该打印出字符串test
(一般情况下未配置.../pytest/
作为源目录时会出现报错No module named “test” 或者ImportError之类的)
将指定目录加入到sys.path(永久或者临时),作为某个项目的源目录(source root)的方法步骤:
- 进入pytest/目录在终端输入
pwd
命令获取到pytest/的绝对路径:
/home/image/Desktop/pytest
- 查看和复制python3的sitepackage路径:
>>python3
>>import site
>>site.getsitepackages()
['/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.8/dist-packages']
复制sitepackages所在路径,根据自己实际要使用的python版本为准,这里我复制的是第一个:
/usr/local/lib/python3.8/dist-packages
- 进入上面复制的目录下
cd /usr/local/lib/python3.8/dist-packages
创建并编辑一个.pth文件
(sudo) vim /usr/local/lib/python3.8/dist-packages/xxx.pth
xxx是你的文件命名
在xxx.pth文件中加入需要添加的项目根目录的路径:
- 验证看是否目录添加到sys.path成功
>>python3
>>import sys
>>sys.path
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/home/image/Desktop', '/home/image/Desktop/pytest', '/usr/lib/python3/dist-packages']
倒数第二个路径/home/image/Desktop/pytest
是刚刚加进去的
在Desktop/pytest/path_test/
目录下执行:
>>>python3 path_test.py
看起来在 应该可以导入然后打印字符串test
,但是却出现了ImportError:
Traceback (most recent call last):File "path_test.py", line 5, in <module>from test import test
ImportError: cannot import name 'test' from 'test' (/usr/lib/python3.8/test/__init__.py)
经过一番检查之后,发现似乎是在找到sys.path的路径之前,在内置模块匹配到了另外一个名为test的模块,然后没有找到需要的/test/test.py,于是想到了解决方法
修改名称目录Desktop/pytest/test/
的名称,例如Desktop/pytest/example/
:
mv test/ example/
同时path_test.py中代码修改为from example import test
然后再运行:
>>>python3 path_test.py
test
发现正常运行,打印了字符串test
临时将指定目录加入到sys.path让python finder可以在导包时可以直接查找到的方法
不修改文件夹名称,单个py文件的一次性解决方法,注意把路径插入到sys.path列表的第一位而不是append
这个时候直接在代码里执行sys.path.insert(0, ‘/home/image/Desktop/pytest’),可以对于本test.py文件奏效
Python导包、模块报错的问题相关推荐
- Python安装torch模块报错处理
Python安装torch模块报错处理 前言 安装 报错 解决 查找文档 解决方案 安装 torch 等待安装完成 安装 torchvision 提示安装完成 总结 前言 因python项目上线,需要 ...
- idea导包都报错_不仅仅要会导别人的包也要会导自定义的包——Python导包总结...
1 前言 导包这个词我相信编程人员不会陌生.如何很好地在Python中导入别人的包以及自己写的工具函数?这时需要分清楚和用好的,特此总结以飨读者. 2 优雅地导入别人的包 当然这里主要指你使用pip( ...
- 明明安装了模块/包,Python提示无包/模块/报错
起因 我在某国外网站找到了一个Python脚本以实施Exploit,但是用Python运行时会提示找不到模块 >>> import 模块名 Traceback (most recen ...
- python multiprocess pool模块报错pickling error
官方文档发现python默认只能pickle以下的类型: None, True, and False integers, floating point numbers, complex numbers ...
- python导入本地模块报错之终极解决方案
很多时候,我们在写一个python项目时,都会分模块来写,在一个模块中导入自己写的另一个模块,最后在写一个启动程序,但运行启动程序时往往会报错说找不到你写的模块,对此,这里教大家一种通用且正规的pyt ...
- python 使用 re 模块报错 re.error: unknown extension ?<n at position
异常解读 该异常的格式一般为: re.error: unknown extension ?<n at position 一个位置数字 本异常看文字提示能大概猜出 BUG 问题所在,属于正则表达式 ...
- 关于python中requests模块导入问题-python引入requests模块报错
import requests模块总是报错,求助大神 >>> import requests Traceback (most recent call last): File &quo ...
- idea导包都报错_IDEA+Springboot 导出jar包,war包
一.jar包导出 使用IDEA内置导出工具会报错 1.安装maven http://maven.apache.org/download.cgi 下载 Binary zip archive 配置环境变量 ...
- Module 'matplotlib' has no 'contourf' member 使用Python导入matplotlib模块报错
错误提示 使用Python编译画图时提示Module 'matplotlib' has no 'contourf' member 原因分析 导入matplotlib模块错误 matplotlib为程序 ...
- python paramiko包 ssh报错No existing session 解决方法
在connect 的时候加入参数 allow_agent, look_for_keys 就可以了 ssh.connect('localhost',username=name,password=pw,a ...
最新文章
- java中对Excel的创建、样式修改
- 常见面试题:重写strcpy() 函数原型
- QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
- 横向技术分析C#、C++和Java优劣
- linux 使用 byzanz 生成 gif 图片程序
- 微信java创建菜单_微信自定义菜单的创建(JAVA版)
- 一个导出类的内部函数的dll
- python部署到linux打开ie_Linux上部署python+selenium+webdriver常见问题解决方案
- 为何要学习 Linux?
- 大数据学习之大数据概述
- Informatic学习总结_day01
- 汽车域控制器架构和OTA的心脏:网关的四大豪门(上)
- 邵武一中2021高考成绩查询,福建高中成绩排名2021,福建中考分数线排行榜
- php计算排名,成绩相同需要并列算法
- Proxmox VE 7.2 使用qemu-img转换磁盘格式
- BT06串口蓝牙模块的配置以及与电脑的配对
- 【数据库课设】机票预订系统 java+mysql实现 附源码
- Apache PHP 的gzip压缩输出的实现方法
- 架构方案(17) 分布式架构系统拆分原则、缘由、以及实战如何拆分步骤
- Eolink上传文件和其他参数设置
热门文章
- btree索引和hash索引的区别(待更新)
- 顺序存储结构和链式存储结构的优缺点
- Linux5观察doc目录并截屏,linux截屏命令
- 深度学习之卷积神经网络 ResNet
- python安装多久_python安装与使用
- windows下最好的围棋_学围棋能使学习成绩提高吗?
- VS toolTip1控件的使用1
- matlab数值很小出错,求大神帮忙解决一下,用MATLAB求解动力学数据总是出错~ - 计算模拟 - 小木虫 - 学术 科研 互动社区...
- Android查看真机布局,android-外部存储
- linux安装 redis,在linux中安装redis