关于python:使用MiKTeX的python包时出现问题

关于python:使用MiKTeX的python包时出现问题

当我尝试test.tex在一个空文件夹中编译以下文件时:

\documentclass[]{report}

\usepackage{python}

\begin{document}

\begin{python}
print(0)
\end{python}

\end{document}

我收到以下错误消息:

! I can't write on file `test.py'.

这是什么原因呢?为什么 pdflatex 无法在该文件上写入?

我尝试过从 TeXstudio 编辑器、命令提示符和 Git Bash 进行编译,既以我自己的用户身份进行,也以管理员身份在提升模式下进行编译,但总是出现相同的错误。我使用pdflatex.exe -synctex=1 -interaction=nonstopmode -shell-escape test.tex终端和pdflatex.exe -synctex=1 -interaction=nonstopmode -shell-escape %.texTeXstudion 进行编译,应该会生成相同的命令。我使用的是 MiKTeX 和 Windows 10。我的 Python 版本是 3.5.3,是 64 位的。

以下是整个日志文件test.log

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6350 64-bit) (preloaded format=pdflatex 2017.7.26)  2 NOV 2017 17:19
entering extended mode
**./test.tex
(test.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 75 language(s) loaded.
("D:\Program Files\MiKTeX 2.9\tex\latex\base\report.cls"
Document Class: report 2014/09/29 v1.4h Standard LaTeX document class
("D:\Program Files\MiKTeX 2.9\tex\latex\base\size10.clo"
File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@chapter=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
("D:\Program Files\MiKTeX 2.9\tex\latex\python\python.sty"
Package: python 2007/06/07 v0.21 Python in LaTeX
\@out=\write3
\@module=\write4
)
No file test.aux.
\openout1 = `test.aux'.

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 5.
LaTeX Font Info:    ... okay on input line 5.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 5.
LaTeX Font Info:    ... okay on input line 5.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 5.
LaTeX Font Info:    ... okay on input line 5.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 5.
LaTeX Font Info:    ... okay on input line 5.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 5.
LaTeX Font Info:    ... okay on input line 5.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 5.
LaTeX Font Info:    ... okay on input line 5.
! I can't write on file `test.py'.
\@python ...mmediate \openout \@out =\jobname .py 
                                                  \newlinechar ='15 \begingr...
l.8 p
     rint(0)
Please type another output file name
! Emergency stop.
\@python ...mmediate \openout \@out =\jobname .py 
                                                  \newlinechar ='15 \begingr...
l.8 p
     rint(0)
*** (job aborted, file error in nonstop mode)


Here is how much of TeX's memory you used:
 231 strings out of 493323
 2485 string characters out of 3139054
 53648 words of memory out of 3000000
 3856 multiletter control sequences out of 15000+200000
 3640 words of font info for 14 fonts, out of 3000000 for 9000
 1141 hyphenation exceptions out of 8191
 23i,0n,17p,118b,36s stack positions out of 5000i,500n,10000p,200000b,50000s
!  ==> Fatal error occurred, no output PDF file produced!

除了这个日志文件之外,我还得到了一个名为 的文件test.aux,但仅此而已。没有test.py生成名为 的文件。

答案1

如果 pdflatex 不能写入py文件,则最可能的原因是某些保护软件拒绝了它的权限。有报道称,例如 bitdefender 会这样做:pdflatex 无法写入某些文件夹

但这也许不是您在使用该软件包时遇到的唯一问题python。它使用程序cat来写入 Windows 中通常不存在的文件。我只能在 git bash 中编译您的文件。

编辑

我想我找到了为什么在某些系统上无法写入 .py 的原因。在一台电脑上,我也遇到同样的问题,.PY原因是 PATHEXT 变量:

 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY

在我删除.PY(这需要管理员权限)后,pdflatex 再次编译并可以写入.py文件。

相关内容