У меня была реальная проблема, пытавшаяся заставить Rpy2 играть хорошо с моей R-установкой.Сначала я попытался установить MSI-пакет rpy2, но это не помогло.Когда я запускал рекомендуемые тесты, он выдавал ошибку, в которой говорилось, что он не может найти R.dll, потому что новые установки R (пост 2.11) устанавливают библиотеки DLL в папку i386, где rpy2 не может их найти, потому чтоон смотрит в папку bin вместо папки bin / i386.
Затем я попытался с нуля собрать установку, используя инструменты командной строки (distutils), входящие в состав python.Это не сработало, потому что setup.py заявил, что не может найти местоположение R_home.Но я понял, что редактирование переменной окружения (PATH) может показать настройку rpy2, где найти установку R.Затем я внес пару изменений в среду, добавив переменную "R_home", указывающую на каталог bin / i386, и сделал новую запись в переменной PATH, указывая на то же место.
К сожалению, когдаон нашел путь R, вместо этого я получил эту проблему:
running build
running build_py
running build_ext
Traceback (most recent call last):
File "setup.py", line 372, in <module>
[os.path.join('doc', 'source', 'rpy2_logo.png')])]
File "C:\Python26\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python26\lib\distutils\dist.py", line 975, in run_commands
self.run_command(cmd)
File "C:\Python26\lib\distutils\dist.py", line 995, in run_command
cmd_obj.run()
File "C:\Python26\lib\distutils\command\build.py", line 134, in run
self.run_command(cmd_name)
File "C:\Python26\lib\distutils\cmd.py", line 333, in run_command
self.distribution.run_command(command)
File "C:\Python26\lib\distutils\dist.py", line 994, in run_command
cmd_obj.ensure_finalized()
File "C:\Python26\lib\distutils\cmd.py", line 117, in ensure_finalized
self.finalize_options()
File "setup.py", line 111, in finalize_options
config += get_rconfig(r_home, about)
File "setup.py", line 264, in get_rconfig
rc = RConfig.from_string(rconfig)
File "setup.py", line 252, in from_string
+ '\nin string\n' + string)
ValueError: Invalid substring in string
Так что я вернулся к попытке использовать готовую установку, думая, что, возможно, новые изменения в среде могут работать, но эта проблема возникла здесь
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "C:\Documents and Settings\User\Desktop\rpy2-2.1.9\rpy\tests.py", line 3, in <module>
import rpy2.robjects.tests
File "C:\Python26\lib\site-packages\rpy2\robjects\__init__.py", line 12, in <module>
import rpy2.rinterface as rinterface
File "C:\Python26\lib\site-packages\rpy2\rinterface\__init__.py", line 56, in <module>
raise RuntimeError("Unable to locate R.dll within %s" % R_HOME)
RuntimeError: Unable to locate R.dll within C:\Program Files\R\R-2.12.1\bin\i386
Это ДЕЙСТВИТЕЛЬНО странно, потому что (как любой может проверить самостоятельно) R устанавливает R.dll в "C: \ Program Files \ R \ R-2.12.1 \ bin \ i386" иЯ проверил и проверил, что это там, и я указал rpy2 на этот каталог в ПУТИ Windows по умолчанию!Я точно знаю, что rpy2 ищет в нужном месте, но не могу понять, почему он не видит R.dll.
Так почему rpy2 не может его найти?И кто-нибудь знает способ заставить rpy2 работать с R 2.12?Возможно, мне стоит попробовать более новую версию rpy2 2.2.0?Тем не менее, он все еще находится в стадии разработки, и 1,9 должен обрабатывать R 2,12 согласно этому веб-сайту , поэтому я не знаю, что делать ...
Спасибо всем, кто можетвыручить ...
[РЕДАКТИРОВАТЬ] Я также пробовал эти инструкции над здесь , но они возвращают ту же ошибку "not find DLL" ... Если вы не измените средупеременная "R_home", указывающая прямо на каталог c / program files / R / R 2.12, а не в подкаталог i386.
Если он указывает на правильное место, вы получите эти ошибки обратно.Это выглядит немного более многообещающе ... Но все равно довольно плохо!
.......................F....................................F.FFF...F....................................................................F..................................
======================================================================
FAIL: testNewWithoutInit (rpy2.rinterface.tests.test_SexpVector.SexpVectorTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_SexpVector.py", line 43, in testNewWithoutInit
self.assertTrue(False) # worked when tested, but calling endEmbeddedR causes trouble
AssertionError
======================================================================
FAIL: testCallErrorWhenEndedR (rpy2.rinterface.tests.test_EmbeddedR.EmbeddedRTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_EmbeddedR.py", line 122, in testCallErrorWhenEndedR
self.assertTrue(False) # worked when tested, but calling endEmbeddedR causes trouble
AssertionError
======================================================================
FAIL: testReadConsoleWithError (rpy2.rinterface.tests.test_EmbeddedR.EmbeddedRTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_EmbeddedR.py", line 117, in testReadConsoleWithError
self.assertTrue(errorstring.startswith('Traceback'))
AssertionError
======================================================================
FAIL: testSetReadConsole (rpy2.rinterface.tests.test_EmbeddedR.EmbeddedRTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_EmbeddedR.py", line 97, in testSetReadConsole
self.assertEquals(yes.strip(), res[0])
AssertionError: 'yes' != ''
======================================================================
FAIL: testSetWriteConsole (rpy2.rinterface.tests.test_EmbeddedR.EmbeddedRTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_EmbeddedR.py", line 36, in testSetWriteConsole
self.assertEquals('[1] "3"\n', str.join('', buf))
AssertionError: '[1] "3"\n' != ''
======================================================================
FAIL: testWriteConsoleWithError (rpy2.rinterface.tests.test_EmbeddedR.EmbeddedRTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\rinterface\tests\test_EmbeddedR.py", line 55, in testWriteConsoleWithError
self.assertTrue(errorstring.startswith('Traceback'))
AssertionError
======================================================================
FAIL: testVectorUnicodeCharacter (rpy2.robjects.tests.testNumpyConversions.NumpyConversionsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python26\lib\site-packages\rpy2\robjects\tests\testNumpyConversions.py", line 54, in testVectorUnicodeCharacter
self.assertTrue(False) # arrays of unicode characters causing segfault
AssertionError
----------------------------------------------------------------------
Ran 172 tests in 0.407s
FAILED (failures=7)
Exit code: True