没有名为 Pygments 的模块

Posted

技术标签:

【中文标题】没有名为 Pygments 的模块【英文标题】:No module named Pygments 【发布时间】:2016-01-24 06:29:41 【问题描述】:

我已将 Pygments 安装到我的 virtualenv 中,并且它似乎已正确导入到我的项目中。

我正在使用 PyCharm,并且我没有从 IDE 收到任何导入错误。

但是当我尝试在 localhost 上运行它时,我收到以下错误:

我的解释器是这样设置的:

如果我尝试导入整个 Pygments 模块,我会遇到同样的问题。知道是什么原因造成的吗?

【问题讨论】:

你把它添加到你的INSTALLED_APPS了吗? 可能你也安装了Django 作为一个全局包并且你没有在 PyCharm 中设置 virtualenv。 如果我将它添加到已安装的应用程序中,我会收到“应用程序尚未加载”错误。 不要将pygments 添加到 INSTALLED_APPS。这不是 django 应用程序。 请不要将代码或错误发布为图像。是文字,就这样贴吧。 【参考方案1】:

让我们继续找出您在“运行”应用程序时真正使用的解释器。

首先,我会在您执行 pygments 导入之前输入此命令: import sys; print(sys.executable)

这将让您很好地了解 Python 解释器正在使用什么。

如果您在 PyCharm 中运行这些东西,您可能忘记设置项目解释器。上面的那行应该能准确地告诉你。

不管怎样,继续前进。要在 PyCharm 中设置项目解释器,请转到 File > Settings,您将看到以下菜单:

转到Project Interpreter 选项(在左侧)。屏幕右侧有个小齿轮,按一下会弹出这个小菜单:

我假设您的虚拟环境在您的本地机器上(而不是在某些虚拟机上)。如果这是真的,你可以直接点击Add Local(即添加本地python解释器)。

在下一个菜单中,假设您的 virtualenv 位于目录 /home/myuser/virtualenv 中,请继续选择文件 /home/myuser/virtualenv/bin/python

差不多了。

现在我假设您正在从 PyCharm 运行项目。

如果我弄错了,并且您是通过诸如 python -m my_module 之类的命令从控制台运行它,并且您在 linux 中,请继续并通过键入 type python 检查您使用的 python 解释器。这将准确地告诉您这是否是您向我们展示站点包的 python。

如果不是,请确保激活该虚拟环境(在 Linux 上为 source /home/myuser/virtualenv/bin/activate)。对于 Windows,google 是您的朋友。

可能发生的其他情况是,您正在使用一些有点懒惰的 shell,即使您已经安装了虚拟环境,它仍然使用以前使用的 python 版本。 在bash 中,使用命令hash -r,在zsh 中使用命令rehash。这将更新您的 shell 以了解新的 python。

如果没有任何效果,只需发布​​你的结果,我可以告诉你从那时起该怎么做。

从您上次的 cmets 来看,您可能不是 activated 您的虚拟环境。

当您 cd 进入您所在的目录 python manage.py runserver 时,您使用了错误的 python。要自己检查,只需转到您的终端,然后 cd 进入包含您的 manage.py 脚本的目录。在此处输入python。在 python 控制台中,运行:import sys; print(sys.executable)

[编辑]

如前所述,它将/usr/bin/python。那不是你想要的 python 可执行文件。

为了让python 在该上下文中引用安装了 pygments 的 python,您需要激活虚拟环境。这只是意味着让python 成为您所期望的命令。

这很容易用这个命令source ~/Desktop/Misc/Hobbies/Programming/Projects/Pygamers/venv/bin/activate完成

运行此命令后,您可以再次输入python manage.py runserver <whatever options you want>,它应该可以工作。

如果没有,则输入hash -r(如果您使用的是 bash shell)或rehash(如果您使用的是 zsh)。您可以通过输入命令env | sort 找出您正在使用的外壳,然后查找密钥SHELL

如果还是不行,在激活你的虚拟环境后,运行命令type python 并发布结果,不过如果你做的一切都正确,它有 99.99% 的机会可以工作。

【讨论】:

所以我使用了print(sys.executable),它返回usr/bin/python,这是不应该的。我在我的项目中将 PyCharm 中的解释器设置为正确的本地 virtualenv,所以我不确定它是如何使用错误的版本的。我添加了一张 PyCharm 的图片,显示了我的问题的解释器。 您如何运行您的应用程序? Pycharm 设置正确,但实际运行您的代码的解释器独立于 pycharm,并且是导致您出现问题的解释器。请分享您在运行应用程序时采取的确切步骤。例如,您是否只使用 pycharm 中的“运行”按钮?如果是这样,请在您的配置中放置一个打印屏幕。也许你没有在那里指定合适的解释器。 Pycharm很复杂,先了解python,然后再了解pycharm,否则你会遇到这种奇怪的情况:D 我通过 localhost 运行项目,而不是在 PyCharm 中。这可能与我的 virtualenv 有关吗? 在本地托管项目与解释器无关。请发布您开始申请的确切步骤。您需要在您的虚拟环境中使用解释器,而您显然没有这样做......例如,在您重新启动计算机后,您尝试启动应用程序的具体步骤是什么?你双击什么东西?你运行一个shell命令吗?你点击 PyCharm 中的按钮吗?我需要确切的步骤:D 我使用终端 cd 进入项目文件夹。然后我使用python manage.py runserver 在端口 8000 启动 localhost。然后我在浏览器中转到 localhost:8000,在那里我得到一个 can't connect to server 错误,我的终端日志中的错误是 no module named pygments.lexers

以上是关于没有名为 Pygments 的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:尝试运行 Pythontex 时没有名为 pygments.styles 的模块

cx_Freeze:Python 错误主脚本。找不到模块错误:没有名为 pygments.lexers.python 的模块

在 Trac 中使用没有 mime 类型的 Pygments 词法分析器?

用于 AspectJ 的 Pygments 词法分析器

找不到 Pygments 样式

没有名为“硒”的模块