没有名为 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 的模块