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文件奏效

Python导包、模块报错的问题相关推荐

  1. Python安装torch模块报错处理

    Python安装torch模块报错处理 前言 安装 报错 解决 查找文档 解决方案 安装 torch 等待安装完成 安装 torchvision 提示安装完成 总结 前言 因python项目上线,需要 ...

  2. idea导包都报错_不仅仅要会导别人的包也要会导自定义的包——Python导包总结...

    1 前言 导包这个词我相信编程人员不会陌生.如何很好地在Python中导入别人的包以及自己写的工具函数?这时需要分清楚和用好的,特此总结以飨读者. 2 优雅地导入别人的包 当然这里主要指你使用pip( ...

  3. 明明安装了模块/包,Python提示无包/模块/报错

    起因 我在某国外网站找到了一个Python脚本以实施Exploit,但是用Python运行时会提示找不到模块 >>> import 模块名 Traceback (most recen ...

  4. python multiprocess pool模块报错pickling error

    官方文档发现python默认只能pickle以下的类型: None, True, and False integers, floating point numbers, complex numbers ...

  5. python导入本地模块报错之终极解决方案

    很多时候,我们在写一个python项目时,都会分模块来写,在一个模块中导入自己写的另一个模块,最后在写一个启动程序,但运行启动程序时往往会报错说找不到你写的模块,对此,这里教大家一种通用且正规的pyt ...

  6. python 使用 re 模块报错 re.error: unknown extension ?<n at position

    异常解读 该异常的格式一般为: re.error: unknown extension ?<n at position 一个位置数字 本异常看文字提示能大概猜出 BUG 问题所在,属于正则表达式 ...

  7. 关于python中requests模块导入问题-python引入requests模块报错

    import requests模块总是报错,求助大神 >>> import requests Traceback (most recent call last): File &quo ...

  8. idea导包都报错_IDEA+Springboot 导出jar包,war包

    一.jar包导出 使用IDEA内置导出工具会报错 1.安装maven http://maven.apache.org/download.cgi 下载 Binary zip archive 配置环境变量 ...

  9. Module 'matplotlib' has no 'contourf' member 使用Python导入matplotlib模块报错

    错误提示 使用Python编译画图时提示Module 'matplotlib' has no 'contourf' member 原因分析 导入matplotlib模块错误 matplotlib为程序 ...

  10. python paramiko包 ssh报错No existing session 解决方法

    在connect 的时候加入参数 allow_agent, look_for_keys 就可以了 ssh.connect('localhost',username=name,password=pw,a ...

最新文章

  1. java中对Excel的创建、样式修改
  2. 常见面试题:重写strcpy() 函数原型
  3. QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
  4. 横向技术分析C#、C++和Java优劣
  5. linux 使用 byzanz 生成 gif 图片程序
  6. 微信java创建菜单_微信自定义菜单的创建(JAVA版)
  7. 一个导出类的内部函数的dll
  8. python部署到linux打开ie_Linux上部署python+selenium+webdriver常见问题解决方案
  9. 为何要学习 Linux?
  10. 大数据学习之大数据概述
  11. Informatic学习总结_day01
  12. 汽车域控制器架构和OTA的心脏:网关的四大豪门(上)
  13. 邵武一中2021高考成绩查询,福建高中成绩排名2021,福建中考分数线排行榜
  14. php计算排名,成绩相同需要并列算法
  15. Proxmox VE 7.2 使用qemu-img转换磁盘格式
  16. BT06串口蓝牙模块的配置以及与电脑的配对
  17. 【数据库课设】机票预订系统 java+mysql实现 附源码
  18. Apache PHP 的gzip压缩输出的实现方法
  19. 架构方案(17) 分布式架构系统拆分原则、缘由、以及实战如何拆分步骤
  20. Eolink上传文件和其他参数设置

热门文章

  1. btree索引和hash索引的区别(待更新)
  2. 顺序存储结构和链式存储结构的优缺点
  3. Linux5观察doc目录并截屏,linux截屏命令
  4. 深度学习之卷积神经网络 ResNet
  5. python安装多久_python安装与使用
  6. windows下最好的围棋_学围棋能使学习成绩提高吗?
  7. VS toolTip1控件的使用1
  8. matlab数值很小出错,求大神帮忙解决一下,用MATLAB求解动力学数据总是出错~ - 计算模拟 - 小木虫 - 学术 科研 互动社区...
  9. Android查看真机布局,android-外部存储
  10. linux安装 redis,在linux中安装redis