我有以下环境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.py
Python 3。因此,将通过 汇编和执行与 Python 3 兼容的临时脚本python <temp script>.py
。但是,看起来python
在命令行上使用会选择 Python 2 而不是 3。如果您确实需要 3,您可以更改命令行选择的版本或使用virtualenv
或类似方法。