子进程pythontex无法工作
此脚本使用pythontex创建ask.tex的LaTeX版本。python代码包括子进程pythontex无法工作,python,latex,subprocess,pdflatex,Python,Latex,Subprocess,Pdflatex,此脚本使用pythontex创建ask.tex的LaTeX版本。python代码包括子流程,完整的python代码runme.py是 #Python 3.4.3 import sys import os import re import subprocess import shutil subprocess.call(['pdflatex', 'Ask.tex']) subprocess.call([sys.executable, 'pythontex.py', 'Ask.tex']) su
子流程
,完整的python代码runme.py
是
#Python 3.4.3
import sys
import os
import re
import subprocess
import shutil
subprocess.call(['pdflatex', 'Ask.tex'])
subprocess.call([sys.executable, 'pythontex.py', 'Ask.tex'])
subprocess.call(['pdflatex', 'Ask.tex'])
\documentclass{article}
\usepackage{ragged2e}
\usepackage[utf8]{inputenc}
\usepackage[letterpaper, top=0.5in, bottom=0.5in, left=1.55in, right=1.55in]{geometry}
\usepackage{multirow,array,varwidth,spreadtab,caption}
\usepackage[norule]{footmisc}
\usepackage{color, colortbl}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{pythontex}
\begin{document}
\begin{pycode}[][]
import mysql.connector
conn=mysql.connector.connect(user='root',password='oilwell',host='localhost',database='sqlpush1')
mycursor=conn.cursor()
query=("SELECT oil from results WHERE DATE(`date`) = '2029-01-01'")
mycursor.execute(query)
data= mycursor.fetchall()
for row in data:
print("{}".format(row[0]))
mycursor.close()
conn.close()
\end{pycode}
\begin{table}[ht]
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\multicolumn{5}{c}{\textbf{NET ENTITLEMENT FISH OIL MARKETS}}\\
\multicolumn{5}{c}{\textbf{AS OF DECEMBER 31, 2019}}\\\hline
%\rowcolor{Cyan}
\multicolumn{1}{|c|}{\multirow{2}{*}{Country}}&\multicolumn{1}{c|}{\multirow{2}{*}{Company}}&Proved Cooked&Proved Uncooked&Total Proved\\
%\rowcolor{Cyan}
\multicolumn{1}{|c|}{}&\multicolumn{1}{c|}{}&(T)&(T)&\cellcolor{blue!25}(T)\\\hline
ChUAN& \pyc{print("{}".format(row[0]))} &51,574&31,202&82,776\\\hline
IraW-West POINT & & 9,656 &57,981&67,637\\\hline
\multicolumn{1}{|c|}{\multirow{3}{*}{KAZSLSKDE}}& PKKR& 32,129 &5,174& 37,304 \\\cline{2-5}
\multicolumn{1}{|c|}{}&KOLKOL&9,718&3,447&13,165\\\cline{2-5}
\multicolumn{1}{|c|}{}&PKPK&424&0&424\\\hline
TOTAL CNNNO & & 103,501 & 97,804 & 201,306\\\hline
\end{tabular}
\end{center}
\label{tab:multicol}
\end{table}
\end{document}
乳胶代码是
#Python 3.4.3
import sys
import os
import re
import subprocess
import shutil
subprocess.call(['pdflatex', 'Ask.tex'])
subprocess.call([sys.executable, 'pythontex.py', 'Ask.tex'])
subprocess.call(['pdflatex', 'Ask.tex'])
\documentclass{article}
\usepackage{ragged2e}
\usepackage[utf8]{inputenc}
\usepackage[letterpaper, top=0.5in, bottom=0.5in, left=1.55in, right=1.55in]{geometry}
\usepackage{multirow,array,varwidth,spreadtab,caption}
\usepackage[norule]{footmisc}
\usepackage{color, colortbl}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{pythontex}
\begin{document}
\begin{pycode}[][]
import mysql.connector
conn=mysql.connector.connect(user='root',password='oilwell',host='localhost',database='sqlpush1')
mycursor=conn.cursor()
query=("SELECT oil from results WHERE DATE(`date`) = '2029-01-01'")
mycursor.execute(query)
data= mycursor.fetchall()
for row in data:
print("{}".format(row[0]))
mycursor.close()
conn.close()
\end{pycode}
\begin{table}[ht]
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\multicolumn{5}{c}{\textbf{NET ENTITLEMENT FISH OIL MARKETS}}\\
\multicolumn{5}{c}{\textbf{AS OF DECEMBER 31, 2019}}\\\hline
%\rowcolor{Cyan}
\multicolumn{1}{|c|}{\multirow{2}{*}{Country}}&\multicolumn{1}{c|}{\multirow{2}{*}{Company}}&Proved Cooked&Proved Uncooked&Total Proved\\
%\rowcolor{Cyan}
\multicolumn{1}{|c|}{}&\multicolumn{1}{c|}{}&(T)&(T)&\cellcolor{blue!25}(T)\\\hline
ChUAN& \pyc{print("{}".format(row[0]))} &51,574&31,202&82,776\\\hline
IraW-West POINT & & 9,656 &57,981&67,637\\\hline
\multicolumn{1}{|c|}{\multirow{3}{*}{KAZSLSKDE}}& PKKR& 32,129 &5,174& 37,304 \\\cline{2-5}
\multicolumn{1}{|c|}{}&KOLKOL&9,718&3,447&13,165\\\cline{2-5}
\multicolumn{1}{|c|}{}&PKPK&424&0&424\\\hline
TOTAL CNNNO & & 103,501 & 97,804 & 201,306\\\hline
\end{tabular}
\end{center}
\label{tab:multicol}
\end{table}
\end{document}
Pythontex需要三个步骤来编译文件,首先运行pdflatex
,然后运行'Pythontex file.py',然后再次运行pdflatex
我将runme.py
和ask.tex
放在pythontex文件夹下,其中包含pythotex.py
文件
在空闲模式下运行runme.py
后,可以执行pdflatex,并弹出cmd提示符窗口并顺利完成但问题是,我看不到pythontex.py
正在运行,这导致输出pdf文件没有任何更改。
非常感谢您对这个问题的任何意见和帮助。非常感谢
[更新]
我将python代码编辑成
import sys
import os
import re
import subprocess
import shutil
subprocess.call(['pdflatex', 'Ask.tex'])
try:
subprocess.call(['pythontex', 'Ask.tex'])
except:
subprocess.call(['pythontex.py', 'Ask.tex'])
subprocess.call(['pdflatex', 'Ask.tex'])
同样,可以执行pdflatex
,但是,存在一些错误
Traceback (most recent call last):
File "C:\Users\Cheng\Desktop\LaTeX Project\pythontex\runme2.py", line 10, in <module>
subprocess.call(['pythontex', 'Ask.tex'])
File "C:\Python34\lib\subprocess.py", line 537, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python34\lib\subprocess.py", line 859, in __init__
restore_signals, start_new_session)
File "C:\Python34\lib\subprocess.py", line 1112, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Cheng Zhang\Desktop\LaTeX Project\pythontex\runme2.py", line 12, in <module>
subprocess.call(['pythontex.py', 'Ask.tex'])
File "C:\Python34\lib\subprocess.py", line 537, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python34\lib\subprocess.py", line 859, in __init__
restore_signals, start_new_session)
File "C:\Python34\lib\subprocess.py", line 1112, in _execute_child
startupinfo)
OSError: [WinError 193] %1 is not a valid Win32 application
回溯(最近一次呼叫最后一次):
文件“C:\Users\Cheng\Desktop\LaTeX Project\pythontex\runme2.py”,第10行,在
调用子进程(['pythontex','Ask.tex']))
调用中第537行的文件“C:\Python34\lib\subprocess.py”
将Popen(*popenargs,**kwargs)作为p:
文件“C:\Python34\lib\subprocess.py”,第859行,在\uuu init中__
恢复信号,启动新会话)
文件“C:\Python34\lib\subprocess.py”,第1112行,在执行子进程中
startupinfo)
FileNotFoundError:[WinError 2]系统找不到指定的文件
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:\Users\Cheng Zhang\Desktop\LaTeX Project\pythontex\runme2.py”,第12行,在
调用子进程(['pythontex.py','Ask.tex']))
调用中第537行的文件“C:\Python34\lib\subprocess.py”
将Popen(*popenargs,**kwargs)作为p:
文件“C:\Python34\lib\subprocess.py”,第859行,在\uuu init中__
恢复信号,启动新会话)
文件“C:\Python34\lib\subprocess.py”,第1112行,在执行子进程中
startupinfo)
OSError:[WinError 193]%1不是有效的Win32应用程序
这是一个新问题核心问题,Python不会运行。在做了一些研究之后,我发现这种方法可以完美地解决问题
#Python 3.4.3
import sys
import os
import re
import subprocess
import shutil
subprocess.call(['pdflatex', 'ask.tex'])
try:
subprocess.call(['pythontex', 'ask.tex'], shell=True)
except:
subprocess.call(['pythontex.py', 'ask.py'], shell=True)
subprocess.call(['pdflatex', 'ask.tex'])
关键部分是add,
shell=True
,否则Python将无法识别该语句 经过研究,我发现这种方法可以完美地解决问题
#Python 3.4.3
import sys
import os
import re
import subprocess
import shutil
subprocess.call(['pdflatex', 'ask.tex'])
try:
subprocess.call(['pythontex', 'ask.tex'], shell=True)
except:
subprocess.call(['pythontex.py', 'ask.py'], shell=True)
subprocess.call(['pdflatex', 'ask.tex'])
关键部分是add,
shell=True
,否则Python将无法识别该语句 你试过传递完整路径吗?@padraiccnningham不,你能告诉我怎么做吗?pdflatex
在cmd提示符下工作吗?您的cwd中是否也有'Ask.tex'
?@padraiccnningham是的,'pdflatex'在cmd提示符下工作,我不确定您所说的cwd是什么意思?当前工作目录您是否尝试过传递完整路径?@padraiccnningham否,您能告诉我如何使用pdflatex
在cmd提示符下工作吗?您的cwd中是否也有'Ask.tex'
?@padraiccnningham是的,'pdflatex'正在cmd提示符下工作,我不确定您所说的cwd是什么意思?当前工作目录