2015-05-11 9 views
3

У меня возникают проблемы при запуске движка python в knitr. Я могу импортировать некоторые модули, но не другие. Например, я могу импортировать numpy, но не pandas.knitr - ошибка при импорте модуля python

{r, engine='python'} import pandas

Я получаю сообщение об ошибке.

Quitting from lines 50-51 (prepayment.Rmd) 
Error in (knit_engines$get(options$engine))(options) : 
Traceback (most recent call last): 
File "<string>", line 1, in <module> 
ImportError: No module named pandas 
Calls: <Anonymous> ... process_group.block -> call_block -> block_exec -> in_dir -> <Anonymous> 
In addition: Warning message: 
running command ''python' -c 'import pandas' 2>&1' had status 1 
Execution halted 

Это должно быть связано с системным путем и где я указываю.

Обычно в IPython я использую

import sys 
sys.path.append('/path/to/directory/') 

Для добавления пути. Я не знаю, в чем проблема.

+0

Вы пытаетесь использовать 'sys' с knitr, а? – Gregor

+0

Итак, я сначала попытался использовать sys с knitr, и это не сработало, как если бы он работал с IPython, поэтому я попробовал что-то более простое, как импорт панд, и это не сработало. Но я смог импортировать другие пакеты, например. numpy ... Любая идея почему? –

+0

Являются ли источники для ваших пакетов в разных местах? Вы можете использовать R-эквиваленты, посмотрите на 'Sys.getenv (« путь »)'. – Gregor

ответ

0

По некоторым причинам она работает немного иначе, чем в IPython

Следующие работал для меня.

я первый вошел в IPython и сделал следующее

import pandas 
import os 
path = os.path.dirname(pandas.__file__) 
Out[4]: '/Users/glendonthompson/anaconda/lib/python2.7/site-packages/pandas' 

Затем в Rstudio в .Rmd файле я побежал

```{r, engine='python'} 
import sys 
sys.path.append('/Users/glendonthompson/anaconda/lib/python2.7/site-packages/') 
import pandas 
``` 

Может быть, его что-то делать с анаконда возиться с моими пакетами ... .

Это также верно с knitr, используя механизм python, который вы должны кэшировать, иначе он не сохранит код в предыдущих кусках?

```{r, engine='python'} 
import sys 
sys.path.append('/Users/glendonthompson/anaconda/lib/python2.7/site-packages/') 
``` 

```{r,engine = 'python'} 
import pandas 
``` 

Не работает ....

+0

По умолчанию не сохраняются параметры от куска до куска. В блоке R вы можете изменить параметры блока по умолчанию для последующих фрагментов, например, 'knitr :: opts_chunks $ set (engine = 'python')' – Gregor

+0

или просто использовать '{python}' вместо '{r, engine = 'python'}'. – Gregor

+0

Извините, что я хотел сказать: '{r, engine = 'python'}' на обоих не работал –