pythontex3.py 无法编译非常简单的 xelatex 文件

pythontex3.py 无法编译非常简单的 xelatex 文件

我有以下环境LinuxMint 15(其安装包含python2.7和3.3。我为2.7和3安装了Texlive,Texworks,Pygments。

使用 Texworks 并创建 xelatex tex 文件,生成 pdf 不会出现问题。

我根据 pdf 中的说明安装了 pythontex 0.11beta。(我在 Windows 上一直使用的该版本,没有任何问题)。

pythontex3.py#/usr/bin/env python改为/usr/bin/env python3

Texworks 生成 pythontex 中间文件时没有显示错误。最小示例代码(我甚至注释了所有 python 代码,但仍然出现错误)

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8

\documentclass{article}

% specific for pythontex:
\usepackage{fancyvrb}
\usepackage{etex}
\usepackage{etoolbox}
\usepackage{xstring}
\usepackage{pgfopts}
\usepackage{newfloat}
\usepackage{pythontex}

\begin{pycode}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#f_aut = open('myfile.txt', encoding='utf-8', mode='w')
\end{pycode}

\begin{document}
aapnootmies

% cleanup pythontex/python
\begin{pycode}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#f_aut.close()
\end{pycode}

\end{document}

给出的错误:这是 PythonTeX v0.11beta

----  Errors and Warnings for py:default:default  ----
  Traceback (most recent call last):
* PythonTeX code error.  Error line cannot be determined.
  Error is likely due to system and/or PythonTeX-generated code.
    File "pythontex-files-troep/py_default_default.py", line 8, in <module>
      sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
  AttributeError: 'file' object has no attribute 'buffer'

我不明白为什么,但对我来说,似乎 python 2.7 和 3 和/或 pygments 之间仍然存在不匹配(因为在生成的中间文件中根本没有 python 代码,因为我把它注释掉了)?

答案1

这是 Python 版本问题。您正在使用pythontex3.pyPython 3。因此,将通过 汇编和执行与 Python 3 兼容的临时脚本python <temp script>.py。但是,看起来python在命令行上使用会选择 Python 2 而不是 3。如果您确实需要 3,您可以更改命令行选择的版本或使用virtualenv或类似方法。

相关内容