【ModuleNotFoundError 与 ImportError】之 sys.path

本文探讨了Python的sys.path在不同解释器中的表现,包括官方IDE、Spyder、PyCharm中的差异,以及如何影响模块导入。重点分析了sys.path[0]的值变化,以及如何通过修改sys.path解决导入问题。
摘要由CSDN通过智能技术生成

提示:苦不堪言!实际工作中肯定是 PyCharm 用得多,但学习 Python 的话,还是感觉 Anaconda(Spyder)舒服,偶尔还想尝试一下直接在 Python IDLE 里用命令行执行脚本。于是,我就遇到了很多 ModuleNotFoundError & ImportError 提示。痛定思痛,终于决定把这些一点一点记录下来,以便参考、分享。


1 前言

提示:这里可以添加本文要记录的大概内容:

本文从了解 sys.path 开始,然后查看当前工作目录在 sys.path 中的不同表达。盼望这样可以清楚了解不同解释器运行同一脚本可能导致的导入错误提示。

【环境】
Win7-64bit
Anaconda (Spyder 4.2.5, Python 3.7.10)
PyCharm 2020.3 (调用 conda 环境)


提示:以下是本篇文章正文内容,下面案例可供参考

2 sys.path 是什么?

import sys

type(sys.path)
list   

先查一下官方文档
在这里插入图片描述
解读如下:

  1. sys.path 返回一个列表,元素包含环境变量 PYTHONPATH 和一条默认路径。
  2. 模块搜索路径中的第一个条目是包含输入脚本的目录(如果有的话)。 否则,第一个条目是当前目录,这是执行交互式 shell、-c 命令或 -m 模块时的情况。
  3. 对于列表而言,第一个条目即 sys.path[0]。
  4. 以命令行执行脚本(交互式),则脚本目录不可用,即 sys.path[0] 为空字符串。为什么是空字符串?因为脚本目录找不到。所以,就会引导进入当前工作目录。当然,空字符串的问题情况较多,后面有详述。
  5. 可以向这个列表添加目录达到初始化导入的目的。向一个列表添加元素可以用 .append(), .insert(), .extend()
  6. 修改 sys.path 的好处在于简单&#x
回答: 根据引用\[1\]和引用\[2\]的信息,ImportError: Failed to import是一个导入模块失败的错误。在引用\[1\]中,出现了ModuleNotFoundError: No module named '***'的错误,这意味着在运行命令python manage.py test时,找不到名为'***'的模块。而在引用\[2\]中,出现了ImportError: Failed to import `pydot`的错误,提示需要安装pydot模块。根据这些信息,可以推断出在运行命令时,系统无法找到所需的自定义模块和pydot模块。 关于解决这个问题,引用\[3\]提供了一种方法。首先,需要确保已经安装了apt-get,并且在安装模块时注意模块的位置。如果使用的是虚拟环境,需要将模块安装在系统的默认环境中。然后,可以使用以下指令来安装pydot-ng模块和graphviz模块:pip install pydot-ng和sudo apt-get install graphviz。这样就可以解决ImportError: Failed to import的问题。 #### 引用[.reference_title] - *1* [django单元测试中出现ImportError: Failed to import test module:问题](https://blog.csdn.net/weixin_46329735/article/details/121424417)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【ImportError: Failed to import “pydot” 在MacOS11.6 (Big Sur)M1芯片中的解决方法】](https://blog.csdn.net/crist_meng/article/details/123904905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值