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)的方法步骤:

  1. 进入pytest/目录在终端输入pwd命令获取到pytest/的绝对路径:
    /home/image/Desktop/pytest
  2. 查看和复制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

  1. 进入上面复制的目录下cd /usr/local/lib/python3.8/dist-packages
    创建并编辑一个.pth文件
    (sudo) vim /usr/local/lib/python3.8/dist-packages/xxx.pth
    xxx是你的文件命名
    在xxx.pth文件中加入需要添加的项目根目录的路径:
    在这里插入图片描述
  2. 验证看是否目录添加到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文件奏效
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CC2540 串口0 通道2配置

从图里面可以看出来&#xff0c;串口0有两个通道&#xff0c;一个通道是P02 P03两个GPIO口。 还有一个通道是P14 P15两个GPIO口。 在软件配置的时候&#xff0c;主要是配置的是一个通道相关的寄存器。 7.6.4 USART 0 The SFR register bit PERCFG.U0CFG selects whether to u…

图像目标分割_6 Mask RCNN

6.6.0 背景 目标检测和语义分割的效果在短时间内得到了很大的改善。在很大程度上&#xff0c;这些进步是由强大的基线系统驱动的&#xff0c;例如&#xff0c;分别用于目标检测和语义分割的Fast/Faster R-CNN和全卷积网络(FCN)框架。这些方法在概念上是直观的&#xff0c;提供…

cf 621E. Wet Shark and Blocks

神奇&#xff0c;矩阵乘法23333333333333333 递推式是很简单的&#xff08;连我这种不会DP的人都写出来了。&#xff09; 需要求出的是转移矩阵&#xff08;还是叫系数矩阵的&#xff09;&#xff0c;也是最这个东西用快速幂。 这个东西的i&#xff0c;j大概就表示从i到j的方案…

Python enum的使用总结

Python enum的使用总结 枚举(enumeration)在许多编程语言中常被表示为一种基础的数据结构使用&#xff0c;枚举帮助组织一系列密切相关的成员到同一个群组机制下&#xff0c;一般各种离散的属性都可以用枚举的数据结构定义&#xff0c;比如颜色、季节、国家、时间单位等 在Pyt…

ascii码转字符

在C语言中&#xff0c;ASCII码转字符非常简单。但是之前因为没有用到就没有去关注这方面的问题。 printf("%c\n",char(69)); E 下面是ASCII码表&#xff1a; BinDecHex缩写/字符解释0000 0000000NUL(null)空字符0000 0001101SOH(start of headline)标题开始0000…

SCI论文写作训练营笔记汇总01_概述+文献检索与管理

1 概述 1.1 适用人群 ①初涉科研&#xff0c; 目前或将来有英文科技论文发表需求的科研工作者 ②正在撰写或准备撰写英文科技论文的科研工作者 1.2 科技论文的基本结构 1.3 科技论文组成部分的写作方法 1.4 阅读文献的重要性 2、文献检索与管理 2.1 如何查找文献参考 2.2 文…

天猫11.11:搜索引擎实时秒级更新(转载)

搜索是很多用户在天猫购物时的第一入口&#xff0c;搜索结果会根据销量、库存、人气对商品进行排序&#xff0c;而商品的显示顺序往往会决定用户的选择&#xff0c;所以保证搜索结果的实时性和准确性非常重要。在电商系统中&#xff0c;特别是在“双十一”这样的高并发场景下&a…

pandas处理日期的几种常用方法

1.读取字符串日期 写入csv 文件 csv_text """date, value 2022-01-01, 1 2022-01-05, 5 2022-11-05, 5 """ with open("date_text.csv", "w") as f:f.write(csv_text)读取日期 df pd.read_csv("date_text.csv"…

OAD 空中升级

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/69222/172351.aspx#172351&#xfeff;&#xfeff;第二十三节 OAD空中升级 通过仿真器更新程序或者通过USB更新固件那都是一般人都可以实现的操作&#xff0c;但是要想实现OAD空中升级…

SCI论文写作训练营笔记汇总02_英文科技论文阅读与解析

3、英文科技论文阅读与解析的方法 3.1 科技论文介绍 3.1.1 科技论文的类型 • Research • Review • Theoretical • Methodological • Case study 3.1.2 研究型论文的结构 3.1.3 科技论文的基本结构 3.2 文献阅读 3.2.1 文献选择的原则 3.2.2 文献阅读顺序 3.2.2 文献阅读…

9.带有返回值的函数

<!DOCTYPE html><html><body> <p>本例调用的函数会执行一个计算&#xff0c;然后返回结果&#xff1a;</p> <p id"demo"></p> <script>function myFunction(a,b){return a*b;} document.getElementById("demo&…

报错curl: (7) Failed to connect to 127.0.0.1 port xxxx: Connection refused

&#xff08;pyenv install xxx&#xff09; 报错curl: (7) Failed to connect to 127.0.0.1 port xxxx: Connection refused的解决方法 问题重现截图&#xff1a; 在查看下面的原因和使用解决方法之前&#xff0c;确保自己的pyenv已经安装好了最新的python-build&#xff0c…

linux通过I2C地址查看设备名称

 root@android:/sys/bus/i2c # cd devices cd devices root@android:/sys/bus/i2c/devices # ls ls 0-0020 0-0022 0-0036 0-0078 1-000c 1-000d 1-001d 1-0028 1-0029 1-002a 1-0038 1-0060 1-0068 2-001c i2c-0 i2c-1 i2c-2 root@android:/sys/bus/i2c/devices # cd 0-00…

SCI论文写作训练营笔记汇总03_科技论文写作(方法篇)

4、科技论文写作——方法篇 4.1 准备工作与概述 4.1.2 杂志编辑评估文章的标准 4.2 图表部分的写作方法 4.2.1 为什么使用图表 4.2.2 如何使用图表 4.2.3 如何选择图or表or文字 4.2.4 图片/表格制作软件 4.2.5 图片的各种指标 4.2.6 图片的分类 4.2.6 图注的使用 4.2.7 表格 …

跨域获取

本地&#xff1a; <?php$_arr array(a>1,b>2,c>3);$_result json_encode($_arr);echo $_result; ?> //本地获取$(form input[typebutton]).click(function(){$.ajax({type:"post",url:"test.php",async:true,dataType:json,success:fun…

python 嵌套型partials(nested partials)的使用

Python嵌套型partial的使用 partial对象中包含partial对象的使用 要实现的目标&#xff0c;简单示例&#xff1a; from functools import partialdef func1(f):return fdef func2(f1):return f1def func(n):return np partial(func2, partial(func1, partial(func, 5))) pri…

SCI论文写作训练营笔记汇总04_科技论文写作(技巧篇)

1、语言点 1.1 时态 1.1.1 时态使用的基本原则 1.1.2 在引言部分的时态使用 1.1.3 在“材料与方法”部分的时态使用 1.1.4 在“结果”部分的时态使用 1.1.5 在“讨论”部分的时态使用 1.1.6 总结 1.2 语态 1.2.1 语态-主动/被动 1.2.2 语态-主动/被动的不同点 1.2.2 语态-主…

做怎样的一个自己

1、如果总是患得患失&#xff0c;即使一时的成功&#xff0c;也不可能找到正确的自己。 2、这一次的创业机会错失了&#xff0c;是一件非常遗憾的事。 3、可是我会是更好的我&#xff0c;明天的我会是更加优秀的我&#xff0c;我将要遇见那个超过自己我我。 为自己努力&#…

SCI论文写作训练营笔记汇总05_英文论文投稿流程与常见问题(完)

1 目标期刊的选择 1.1 文章未送审直接被拒稿的常见理由 1.2 目标期刊的选择 1.2.1 学科与影响力 1.2.2 影响因子 1.2.3 审稿平均周期 1.2.4 主编水平 1.2.5 版面费 2 根据期刊要求调整文章 2.1 具体 2.2 期刊的审查重点 2.3 期刊的审查列表 3 其他材料 3.1 稿件作者信息 3.…

【bzoj1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛 Floyd+二分+网络流最大流

题目描述 FJs cows really hate getting wet so much that the mere thought of getting caught in the rain makes them shake in their hooves. They have decided to put a rain siren on the farm to let them know when rain is approaching. They intend to create a rai…