我正在尝试让 PythonTeX 0.15 与我的 MiKTeX 2.9 安装配合使用,但遇到了问题。问题是,当我从 MiKTeX 运行批处理文件时,我收到错误ImportError: No module named 'pygments'
,而在命令行上运行完全相同的命令却运行正常。
以文件夹为参数手动运行.bat
文件也能正常工作(因此,文件本身似乎没有问题 - 与 MiKTeX 的调用方式有关?)。.tex
thesis
.bat
.bat
文件:
pythontex.exe --interpreter "python:py -3" "%1.tex"
命令行(从thesis.tex
文件夹运行):
pythontex.exe --interpreter "python:py -3" thesis.tex
从 MiKTeX 内部运行批处理文件时,我收到以下错误消息:
E:\School\PATHEDITED>pythontex.exe --interpreter "python:py -3" "thesis.tex"
Traceback (most recent call last):
File "C:\Users\USERNAME\AppData\Roaming\MiKTeX\2.9\scripts\pythontex\pythontex.py", line 55, in <module>
import pythontex3 as pythontex
File "C:\Users\USERNAME\AppData\Roaming\MiKTeX\2.9\scripts\pythontex\pythontex3.py", line 61, in <module>
from pygments.styles import get_all_styles
ImportError: No module named 'pygments'
因此,PythonTeX 似乎认为pygments
没有安装...具体如下:
C:\Users\USERNAME>pygmentize --help
Usage: C:\Users\USERNAME\AppData\Local\Programs\Python\Python35-32\Scripts\pygmentize [-l <lexer> | -g] [-F <filter>[:<options>]] [-f <formatter>]
[-O <options>] [-P <option=value>] [-s] [-v] [-o <outfile>] [<infile>]
[*CHOPPED FOR BREVITY*]
不确定这是否相关,但我也安装了 Python 2.7。安装时pygments
,我运行了pip install pygments
,但不确定它是否忽略了 2.7 版本。我在想 PythonTex 是不是在试图使用 2.7 版本?不存在 Python 2.7 PATH 变量,只有 3.5...所以我不确定这是否与问题有关?
如果我删除--interpreter "python:py -3"
命令的该部分,我会得到相同的行为 - .bat 中断,而命令行有效。
我无论如何也想不出为什么会出现这种情况!我希望 @g-poore 或其他解决过这个问题的人能帮我找出问题所在。
为了完整起见,我的 .tex 文档只有这两行与 PythonTex 相关的行(如果我删除这两行,则可以编译):
\usepackage{pythontex}
和
\begin{pycode}
print ('Hello, \\LaTeX')
\end{pycode}
答案1
更新: 我遵循了下面的原始方法,但找到了更好的方法(至少对我来说):
我完全卸载了所有 Python 安装,然后安装了 Anaconda Python 3.5。再次通过安装了必要的 Pygments pip
。删除了 MiKTeX 中的旧 Python 文件夹路径,并改为包含新的 Anaconda Python 安装。一切都立即生效。
原来的: 事实证明,这个问题与 64 位和 32 位路径差异有关。
Pygments 安装在 Python35-32 文件夹中:
C:\Users\USERNAME\AppData\Local\Programs\Python\Python35-32
但是,系统路径和 MiKTeX 中的 python 可执行文件正在查找:
C:\Users\USERNAME\AppData\Local\Programs\Python\Python35
我找到了两种解决这个问题的方法。
- 将所有内容转移到使用 32 位 Python(很烦人,但 Pygments 似乎没有 64 位版本?这意味着这是正确的方法)
- 将 32 位 Pygments 文件/文件夹从
Python35-32
文件夹复制到Python35
文件夹(不正确 - 它不会通过 更新/卸载pip
,但仍然有效)
实际上,为了我自己的目的,我选择了 #2(因为工作量较少),但如果我发现与 32 位/64 位不兼容相关的问题,我可能需要重新审视 #1。