- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
短:
我一直在尝试调试发生在我的本地仓库克隆之一中的 ModuleNotFoundError
。
更多细节:
我有同一个仓库的两个克隆。目前两者都已 checkout 主分支。我想运行一个 Python 脚本,它导入各种模块,导入其他模块等。在第一个 repo 克隆中,我得到 ModuleNotFoundError: No module named 'TheModuleInQuestion'
。在第二个克隆中,脚本成功导入了它需要的所有内容并且运行没有错误 - 尽管 sys.path 不包含特定于 repo 的文件夹名称,尽管所有可能被导入的文件也存在于第一个 repo 中。
我想通过观察导入过程、搜索文件夹的顺序以及第二个 repo 中导入模块的路径来调试它,最好使用 pdb。我在线查看了 pdb 用户指南,但没有发现与此特定用例相关的内容。我该怎么做呢?
更多信息
我所有的 repo 克隆都在 ~/git 的子文件夹中(或者,因为我在 Windows 10 上使用 Git Bash,C:\users\myusername\git)
我使用的是 Python 3.6.5 32 位。这不是最新版本,它是公司出于与某些包或其他包的兼容性原因指定的版本。
>>> import sys
>>> sys.path
['', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages', 'c:\\users\\myusername\\downloads\\pyopenssl-master\\src']
得到之后
ModuleNotFoundError: No module named 'TheModuleInQuestion'
我已经在我的存储库克隆中搜索名称以“TheModuleInQuestion”开头的文件。其中任何一个都没有“The ModuleInQuestion.py”。各种文件夹包含:
最佳答案
Python 模块可以是纯 Python(.py 文件)或二进制 lib 文件(Linux 上的 .so,Windows 上的 .dll),因此您要查找的模块很可能是“TheModuleInQuestion.dll”。
wrt/“使用 pdb 调试导入过程”,恐怕你不能在这里做很多事情——pdb 只能在纯 python 代码上工作,所有导入系统都是内置的(python.h 的一部分)。 exe 运行时)。
尽管如此,您仍然可以回答两个问题:
the order in which folders are searched
那是 sys.path
,非常简单。这正是它定义的:搜索文件夹的顺序。 FWIW,它包含“没有特定于 repo 的文件夹名称”这一事实是正常的并且是预期的。
and the path of the imported module in the second repo
转到你的第二个 repo 文件夹,打开一个 python shell 并键入
>>> import TheModuleInQuestion
>>> print(TheModuleInQuestion)
现在,如果两个本地存储库都是同一个远程仓库的克隆并且在同一个分支上(它们在同一个版本中吗?),它们之间应该没有太大区别。我不知道 Windows 上有哪些差异工具可用,但我在这里要做的第一件事就是对存储库进行差异分析。
如果没有什么明显的结果,我会检查文件和文件夹权限(当然特别是这个“TheModuleInQuestion.xxx”文件,但也会检查通向它的整个路径)。
最后 - 如果没有其他办法解决问题 - 我会制作第三个克隆存储库并对其进行测试(最终测试不同的修订版)。
哦,是的:清理陈旧的 .pyc 文件通常是个好主意。我认为它不会解决您的任何问题(如果 TheModuleInQuestion 是一个 dll...),但这仍然是个好主意 - 有时删除的 .py 文件会留下陈旧的 .pyc,并且那么所有的赌注都取消了;-)
关于python - 调试 Python 导入失败 (ModuleNotFoundError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59749670/
I have installed WeasyPrint==0.42.3 using pip3 install WeasyPrint==0.42.3, but when I try to impo
我正在从远程服务器设置Jupyter笔记本电脑环境。当我导入Notebook.auth时,它报告错误如下:。我的jupyter参数如下所示:。有人知道如何解决这个问题吗?我已经尝试了pip安装jupy
在运行命令时,我遇到了一个错误:Heroku run pythonManage.py Migrate。当我运行它时,它会出现错误:ModuleNotFoundError:没有名为‘Django’的模块
PC:Windows 11 WSL 2,ubuntu-22.04。我打算按照这些说明安装'cnntools'。安装后,我对其进行了测试。这件事就发生了。。我的电脑怎么了?我必须买一台新电脑吗?。我试过
我的文件夹结构是: |-fastapi |-app |-calc.py |-tests |-mytest.py 在 mytest.py 中,我尝试导入 calc.py,
假设我们有以下结构: outer_module.py| |subfolder| |__init__.py
我在 conda 中创建了一个新环境并安装了 yaml。 $ conda list | grep yaml yaml 0.1.7
我使用了来自 python-nmap 的 import nmap 模块,它在 Pycharm 中运行良好。 但是当我尝试在命令提示符下运行相同的程序时,出现错误: ModuleNotFoundErro
my_controller.py 如下: from models import Person david = Person('David') 我的项目结构是 app ├── controller │
我已经使用 tensorflow 构建了一个 python 脚本,现在我正在尝试将其转换为 .exe 文件,但遇到了问题。使用 pyinstaller 并从命令提示符运行程序后,我收到以下错误: Fi
我在网络驱动器上安装了 Python。我用了pushd命令进入同一网络驱动器上我的项目文件夹。我在那个文件夹中打开 python。我尝试导入该文件夹中的模块。一个 ModuleNotFoundErro
我的发行版是WinPython,我使用Spyder作为IDLE,我的python版本是3.6.5。 尽管我有很多模块(来自 WinPython 下载),例如 pip、pandas 和 numpy,它们
我在 macOS Mojave 版本 10.14.1 上使用 Python 3.7.1 这是我的目录结构: man/ Mans/
我的文件夹结构: ttsTacotron.py Tacotron-2 |.. |tacotron| |train.py |synthetizer.py
我正在使用 Python 3.6.0 和 pipenv。我在pycharm中有一个名为myapp的python项目,目录结构为 - myapp - src - __init__.py -
我利用自制程序安装 python3,现在无法运行使用关联的 pip3 二进制文件安装的模块。 from blackduck.HubRestApi import HubInstance username
我正在开发 Flask 应用程序并尝试运行我的测试文件,但无法执行此操作。我当前的应用程序结构是: Project ── app │ ├── __init__.py │ ├── forms.p
(在用重复的问题投票标记我之前,请注意,我在这个问题上找到的所有内容都与 virtualenv 有关,而不是 venv) 系统: Ubuntu 服务器 16.04 已安装 Python 3.6,原生
Visual Studio 2017 - 空 Python 项目我的代码如下所示(是的,只有两行): import pandas as pd import Quandl 我已将 Quandl (3.2
我需要 pickle 我已经实例化的 python 类,因此需要使用相对路径。我正在使用 Python 版本 3.6.6。以下是项目结构和代码的示例: modelling/ test.py
我是一名优秀的程序员,十分优秀!