MiKTeX 与 PythonTeX 导致 ImportError:没有来自 .bat 文件的名为“pygments”的模块,而不是来自命令行

MiKTeX 与 PythonTeX 导致 ImportError:没有来自 .bat 文件的名为“pygments”的模块,而不是来自命令行

我正在尝试让 PythonTeX 0.15 与我的 MiKTeX 2.9 安装配合使用,但遇到了问题。问题是,当我从 MiKTeX 运行批处理文件时,我收到错误ImportError: No module named 'pygments',而在命令行上运行完全相同的命令却运行正常。

以文件夹为参数手动运行.bat文件也能正常工作(因此,文件本身似乎没有问题 - 与 MiKTeX 的调用方式有关?)。.texthesis.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

我找到了两种解决这个问题的方法。

  1. 将所有内容转移到使用 32 位 Python(很烦人,但 Pygments 似乎没有 64 位版本?这意味着这是正确的方法)
  2. 将 32 位 Pygments 文件/文件夹从Python35-32文件夹复制到Python35文件夹(不正确 - 它不会通过 更新/卸载pip,但仍然有效)

实际上,为了我自己的目的,我选择了 #2(因为工作量较少),但如果我发现与 32 位/64 位不兼容相关的问题,我可能需要重新审视 #1。

相关内容