当我跑步
sudo pip install jinja2
时,我看到:Requirement already satisfied: Jinja2 in /Users/rose/Library/Python/2.7/lib/python/site-packages/Jinja2-2.7.2-py2.7.egg
。
但是在新的 python 2.7 shell 中运行
import jinja2
会给出: ImportError: No module named jinja2
请注意,Jinja2 安装在您的主目录中,并且 Python 的 site-packages 目录位于
/Library/Python/2.7/site-packages
。您的 Python 路径中可能不包含 /Users/rose/Library/Python/2.7/lib/python/site-packages/
,或者 Python 无权访问此目录。这可能是使用 pip install jinja2
而不是 sudo pip install jinja2
安装 Jinja2 的结果。
您可以通过打开 Python shell 来检查是否
/Users/rose/Library/Python/2.7/lib/python/site-packages/
:
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/dist-packages']
如果没有,最简单的解决方案可能就是以管理员身份重新安装 Jinja2:
pip uninstall jinja2
sudo pip install jinja2
Mark Edge 提出的最简单的解决方案对我来说不起作用,因为 pip 安装了 jinja2 来放置不在路径中。
这是我开发的解决方案:
pip install jinja2
。您将得到类似 Requirement已经满足:jinja2 in /usr/local/lib/python2.7/site-packages 的内容,这就是您需要的路径。我添加了:
export PATH="/usr/local/lib/python2.7/site-packages:$PATH"
PYTHONPATH="$HOME/Scripts/:$PATH"
如果您已经有像上面这样的 PYTHONPATH 行,请仅添加导出行。
重新启动 shell/终端窗口,以便它们选择新路径。
这样做解决了我的问题“没有名为 jinja2 的模块”
我遇到了这个问题。 我安装了
python2
和 python3
(在 MacOS 上),并尝试在 python2
下运行(这是默认版本)。 看来 pip
默认为 python3
。 对我来说修复很简单:
pip2 install jinja2
我还注意到,使用虚拟环境时不会出现此问题。
当我遇到这个问题时,我正在将脚本放入 Dockerfile 中。结果我的
#!/usr/bin/python3
触发了 python 的另一个实例。 FROM python:3
python3 二进制文件从路径中的 /usr/local/bin/python3 运行。
而不是运行为:
RUN ./myscript.py
我去了:
RUN python3 ./myscript.py
可能是您最近在虚拟环境中安装了该软件包。可能最快的解决方案之一就是停用并重新激活虚拟环境。
deactivate
source .venv/bin/activate