添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

背景: python3版本在调试接口自动化Case时,在Pycharm IDE运行没有问题,可以正常运行py脚本,但是在终端和Docker机器上执行脚本时,一直提示 No module name 'tools'

python3 test1.py
Traceback (most recent call last):
File "test1.py", line 7, in <module>
import tools
ModuleNotFoundError: No module named 'tools'

问题定位思路:

1、python包无法引用,每个文件夹下添加__init__.py类,模块导入方式修改为:import tools.tools,调用方式都正确,但是仍然无效

2、新建一个虚拟环境,将该项目的测试环境隔离,然后在虚拟环境下执行脚本,仍然报错

python -m venv venv,内置venv模块,针对该项目创建的新的虚拟环境

python3 -m venv venv
tree -L 2
├── Instruction_Install
├── ReadMe
├── common
│   ├── __init__.py
│   ├── log_test.py
│   └── test.log
├── src
│   ├── test1.py
│   ├── test2.py
│   └── �\227�\225�\230�\233�
├── tools
│   └── tool.py
├── utils
│   └── AssertUtil.py
└── venv
    ├── bin
    ├── include
    ├── lib
    └── pyvenv.cfg
#激活虚拟环境,进入venv/bin下
activate		activate.fish		easy_install-3.7	pip3			python
activate.csh		easy_install		pip			pip3.7			python3
pyExercise % sh ./venv/bin/activate

3、在终端执行脚本,报错如下,进入目录:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tools

python3 test1.py
Traceback (most recent call last):
  File "test1.py", line 8, in <module>
    from tools import tools
ImportError: cannot import name 'tools' from 'tools' (/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tools/__init__.py)

进入目录后,看到系统内置文件,确定是因为命名重复导致,(此处有崩溃的感觉~~),项目模块名称tools修改为 ToolsUtils,重新导入包名和方法,问题解决

didi@ShirleydeMacBook-Pro tools % cd /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tools
didi@ShirleydeMacBook-Pro tools % tree -L 1
├── __init__.py
├── __pycache__
├── const.py
├── content.py
├── control.py
├── debug.py
├── encoding.py
├── error.py
├── etree.py
├── export
├── feed.py
├── files.py
├── google.py
├── html.py
├── http.py
├── internal.py
├── lock.py
├── logs.py
├── metric.py
├── parser.py
├── ping.py
├── progress.py
├── pwork.py
├── py3k_support.py
├── rex.py
├── russian.py
├── selenium_tools.py
├── structured.py
├── system.py
├── text.py
├── user_agent.py
├── w3lib_encoding.py
├── watch.py
├── work.py
└── yandex.py
2 directories, 33 files

4、另外一种解决方法:将项目的跟路径加入到python的环境变量路径

可以看到,python console中选择 Add content roots to PYTHONPATH,默认会加入项目到跟路径中

import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])

代码引入包的模块加入代码:

import sys,os
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_path)

服务器和终端执行脚本,可以正确识别包名。

结果分析:

整体对Python语言基本环境理解不透彻,导致没有定位到问题根因,还需要把这一个整理清楚,需要有深度学习能力。

调试接口自动化Case时,在Pycharm IDE运行没有问题ipython3 ArgentinaAccess.pyTraceback (most recent call last): File "ArgentinaAccess.py", line 7, in &lt;module&gt; import toolModuleNotFoundError: No module named 'tool'python3 ArgentinaAccess.pyTraceback (mos...
Python使用pip安装报错ModuleNotFoundError: No module named ‘pkg_resources’的解决方法   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!! 博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 Python使用pip安装报错ModuleNotFoundError: No module named ‘pkg_resources’的解决方法: 我们在CMD中打开python的
"ModuleNotFoundError: No module named 'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,导致这个报错的原因也非常多,下面是我曾经遇到过的原因和解决方案 module包没安装 忘了import 没有__init__.py文件 package包的版本不对 自定义的包名与安装的包名相同,导致import包的时候导错了包 没设置PYTHO...
#原则相冲突,请谅解,勿喷 ModuleNotFoundError: No module named ‘xxx’ 分析 这个问题只要是用过python的人,一般或多或少都会遇到过这个问题,这个问题其实很明确,就是你import的module找不到。 关于为啥找不到的原因,倒是有很多花里胡哨原因。 Python module的搜索路径 python的module搜索路径,其实是编译python的时候就有相关的
ModuleNotFoundError:No module named xxx 罪魁祸首竟是虚拟环境!ModuleNotFoundError是什么意思?Pycharm的虚拟环境为什么虚拟环境会造成ModuleNotFoundError?怎么解决由虚拟环境造成的ModuleNotFoundError总结 ModuleNotFoundError是什么意思? ModuleNotFoundError:No module named XXX,这个错误是我们初学Python的朋友经常会遇到的,出现这个错误的原因是我们
背景描述: 当在idea编写python文件导入上级其它同级目录下文件时,编码检查及行行正常,但在linux远程使用命令执行报“ModuleNotFoundError: No module named 模块名”错误。 项目目录结构及执行脚本如下: 首先,了解os和sys的区别: os: 这个模块提供了一种方便的使用操作系统函数的方法。如:os.path.exists() 是否存在, sys: 这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数。如:sys.argv ..
在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的。但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError: No module named xxx这样的错误,解决方法: 在报错的模块中添加: import sys import os curPath = os.path.abspath(os.path...
No module named 'tools.utils'No module named 'tools.utils' No module namedtools.utils’ No module namedtools.utils’ 这个问题在于,tools这个文件夹只能存在python环境(就是你python的基础环境,不是你pycharm那个常用环境) 只能在这有一份,不能在pycharm常用环境再复制一份,我就是这样的情况。 所以解决方法就是把非python环境的另一个工作环境(常用环境)里的那一
### 回答1: 这个错误是在Python运行时状态中出现的。它是由于运行的Python程序中调用了一个未导入的模块而引起的。具体的错误信息是“ModuleNotFoundError: no module named”。这个错误可能有几个可能的原因,其中包括: 1. 模块名称拼写错误 - 检查代码中调用模块的名称是否正确拼写,否则Python将无法找到相应的模块。 2. 模块没有安装 - 模块必须安装才能在Python程序中运行。如果模块没有安装,那么Python找不到该模块。 3. 模块路径不正确 - Python模块通常在Python安装库中安装,但是如果模块不在标准库中,那么需要在代码中指定正确的路径。 解决这个问题需要进行以下几个步骤: 1. 仔细检查导入模块的代码是否正确。 2. 确保导入的模块已经正确安装。 3. 确认模块路经是否正确。 4. 修改代码或添加必要的库和环境变量,以使Python能够找到相应的模块。 总的来说,这个错误通过对Python程序进行仔细的检查和调试来解决,找到导致这个错误的问题并修复它。 ### 回答2: Python运行时状态中的core initialized modulenotfounderror: no module named,是指Python在尝试导入模块时发现此模块不存在,从而抛出了ModuleNotFoundError异常。 通常情况下,这种异常是由以下情况引起的: 1. 模块名称输入错误或拼写错误。 在导入模块时,如果输入的模块名称不正确或存在拼写错误,Python将无法找到该模块并抛出ModuleNotFoundError异常。 2. 模块不存在或未安装。 如果要导入的模块不存在或没有安装,当Python尝试导入该模块时,也会抛出ModuleNotFoundError异常。 解决这种问题的方法包括检查模块名称的拼写是否正确,检查模块是否存在,并通过pip等工具安装或更新该模块。 3. 模块路径设置错误。 在某些情况下,在Python环境中导入模块时,Python可能无法找到该模块的正确路径。这通常是由于安装了多个Python版本或环境变量设置错误导致的。 解决这种问题的方法是检查Python路径环境变量的设置是否正确,并确保在正确的Python环境中运行代码。 总之,当Python在运行时状态中抛出了core initialized modulenotfounderror: no module named异常时,我们需要仔细检查代码中的模块名称拼写,确保模块已经正确安装,并检查Python环境变量的设置,以确定Python是否能够找到所需的模块。 ### 回答3: Python Runtime State:核心初始化时Modulenotfounderror:没有找到该模块 这是一种常见情况,通常会在Python中的某些库或模块不存在或已被删除的情况下发生。当我们尝试使用import语句导入缺少的模块时,Python会尝试在sys.path中查找该模块。如果查找失败,Python会在控制台上抛出一个错误,特别是Modulenotfounderror:没有找到该模块错误。 这种错误通常发生在以下情况下: 1. 尝试导入一个不存在的模块。 2. 尝试导入打有错字的模块。 3. 该模块存在,但不在sys.path中。 要解决此错误,我们可以采取以下措施: 1. 检查是否正确拼写了要导入的模块名称,如果存在打错字,就需要更正。 2. 检查模块是否已安装,如果没有安装可以通过 pip install <module_name>的方式安装。 3. 检查模块路径是否在sys.path中,如果不存在,可以通过添加sys.path来解决问题。 此外,也可以将python 自己的包放入PYTHONPATH或使用site.py的add-package函数添加到特定用户的site-packages目录。 Modulenotfounderror:没有找到该模块错误通常是由于我们尝试在Python中导入不存在或包含打错字的模块而引起的。为了解决这个问题,我们需要确保正确拼写要导入的模块、模块是否已安装、路径是否在sys.path中等。通过这些简单的解决方案,我们可以轻松地解决Modulenotfounderror:没有找到该模块错误。
JMeter调用webservice接口报错:java.net.MalformedURLException: Illegal character found in host: ‘/‘ No Feign Client for loadBalancing defined. Did you forge to include spring-cloud-starter-netflix-rib JMeter调用webservice接口报错:java.net.MalformedURLException: Illegal character found in host: ‘/‘ 一句分开写就解决了问题。 有点不明白 为何分开就可以解决? 跟直接放地址里面有什么不同? JMeter调用webservice接口报错:java.net.MalformedURLException: Illegal character found in host: ‘/‘ 感谢,我之前一直都没有找到原因