.spec 文件中的“ModuleNotFoundError:没有名为 'kivymd' 的模块”

Posted

技术标签:

【中文标题】.spec 文件中的“ModuleNotFoundError:没有名为 \'kivymd\' 的模块”【英文标题】:"ModuleNotFoundError: No module named 'kivymd'" in .spec file.spec 文件中的“ModuleNotFoundError:没有名为 'kivymd' 的模块” 【发布时间】:2021-08-23 15:02:06 【问题描述】:

我已经在我的 Python 项目中安装了 kivymd。我的项目中也有 kivymd 目录。 我正在使用 Mac。 我创建了一个名为“coinsnack4.spec”的规范文件,包括以下代码:

from kivymd import hooks_path as kivymd_hooks_path

但是,当我尝试使用以下命令将我的 python 项目与规范文件打包时:

pyinstaller -y --clean --windowed coinsnack4.spec

我收到以下错误:

  File "coinsnack4.spec", line 3, in <module>
    from kivymd import hooks_path as kivymd_hooks_path
ModuleNotFoundError: No module named 'kivymd'

我真的不知道为什么会这样,因为我已经 pip install kivymd。我不知道下一步该怎么做,如果有人能帮助我解决这个错误,我将不胜感激。

非常感谢!

【问题讨论】:

您使用的是哪个 IDE。 IDE 必须使用与终端上使用的不同的 Python 解释器 嗨!我正在使用 Pycharm。 如果你使用不同的python解释器,你能检查一下pycharm设置吗 我正在使用 virtualvenv 解释器,但我的终端似乎正在使用 anaconda。 请在终端上激活 virtualenv 并安装 kivymd 或更改您的 pycharm 设置以指向您的终端默认使用的解释器 【参考方案1】:

您为什么会遇到这个问题?

这背后的原因是python中虚拟环境的概念。每个虚拟环境相互独立。您可以使用不同的虚拟环境,根据您的项目要求激活和停用它们。

我建议你看一遍这个文档Python venv

当您从本地终端执行 `pip install 时,如果您尝试执行 python 程序,它将从默认 python 环境和终端本身(不是 pycharm 终端)安装包很好,但是一旦您切换到 pycharm 或任何其他 IDE,它就有自己的 python 环境集,并且该环境不知道在其他 python 环境中发生了什么。所以你也需要在这里安装 pip 包,以便执行相同的 python 程序。

解决办法:-

我建议的第一件事是将软件包安装在 pycharm 正在使用的虚拟环境中。为此,请单击 pycharm 窗口下方栏的 Terminal 图标。然后运行以下命令:-

python3 -m pip install kivymd

如果这样不行,尝试在pycharm中配置python环境。

以下是如何在 pycharm 中更改或更新 Python 解释器:-

设置现有的 Python 解释器

您可以随时使用 Python 解释器选择器或在项目设置/首选项中切换您的 Python 解释器。

创建一个新的 Python 解释器

要向当前项目添加新的解释器:

如果您有 conda 环境,请按照以下步骤操作:-

或者,如果您想设置一个新的虚拟环境,请执行以下操作:-

【讨论】:

以上是关于.spec 文件中的“ModuleNotFoundError:没有名为 'kivymd' 的模块”的主要内容,如果未能解决你的问题,请参考以下文章

微服务:docker.compose 文件中的 ESHOP_OCELOT_VOLUME_SPEC 行是啥意思

转译时排除 *.spec.ts 文件,但仍能正确 lint

rpm.spec文件中的多个tar(源文件)文件

《Buildozer打包实战指南》第六节 buildozer.spec配置文件中的其他参数

《Buildozer打包实战指南》第六节 buildozer.spec配置文件中的其他参数

*.directive.spec.ts 中的错误 TS2554