Надеюсь, это не так просто, как кажется. У меня есть базовый каталог:
root --> Paper
--> Code
для статьи, которую я пишу. Я хочу вызвать скрипт Python в каталоге Code из моего документа Knitr в каталоге Paper (что-то вроде этого, но с Python вместо R). Так что это будет что-то вроде этого:
Python-скрипт testit.py
## @knitr testit
import os
print os.getcwd()
Сохраненный в каталоге кода документ, связанный с вязанием, test.Rnw:
\documentclass{article}
\begin{document}
<<setup,echo=FALSE>>=
read_chunk("testit.py")
@
<<testit,engine='python'>>=
@
\end{document}
Когда я компилирую в PDF, ответ правильный:
## /Users/blah/foo/bar/Code
Но документ test-2.Rnw сохранен в папке Paper:
\documentclass{article}
\begin{document}
<<setup,echo=FALSE>>=
opts_knit$set(root.dir="../Code/")
read_chunk("../Code/testit.py")
@
<<testit,engine='python'>>=
@
\end{document}
выходы:
## /Users/blah/foo/bar/Paper
root.dir не имеет здесь очевидного эффекта, как для фрагмента R, и я не знаю, что еще можно попробовать изменить каталог для фрагмента Python. Это проблема, потому что я хотел бы, чтобы скрипт python работал с файлами в каталоге Code, но, конечно, не может их найти. Я мог бы жестко запрограммировать изменение каталога в скрипте Python, но это кажется хрупким. Я бы даже был рад передать корневой каталог непосредственно интерпретатору python в качестве аргумента скрипта, если бы это было возможно (но я так не думаю, потому что Knitr использует python -c ?). Любые мысли о том, как справиться с этим? Мой гугл-фу подвел меня здесь...