RのインストールでRpy2をうまく機能させようとして、私は本当の問題を抱えていました。最初に rpy2 MSI パッケージをインストールしようとしましたが、うまくいかないようでした。推奨されるテストを実行すると、R.dll が見つからないというエラーが表示されました。これは、新しい R インストール (2.11 以降) が DLL を i386 フォルダーにインストールするためです。 bin/i386 フォルダーではなく bin フォルダーを探しています。
次に、Python に含まれているコマンド ライン ツール (distutils) を使用して、インストールを自分でゼロから構築しようとしました。setup.py が R_home の場所を見つけることができないと主張したため、これは機能しませんでした。しかし、環境変数 (PATH) を編集すると、rpy2 セットアップに R インストールの場所が表示される可能性があることがわかりました。次に、bin/i386 ディレクトリを指す「R_home」変数を追加して、環境をいくつか編集し、同じ場所を指す 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 のデフォルト PATH のこのディレクトリに指定しました。rpy2 が適切な場所を探しているという事実は知っていますが、なぜ R.dll が表示されないのか理解できません。
では、なぜ rpy2 はそれを見つけられないのでしょうか? また、rpy2 を R 2.12 で動作させる方法を知っている人はいますか? おそらく、新しい rpy2 2.2.0 バージョンを試す必要がありますか? まだ開発中ですが、このWebサイトによると、1.9はR 2.12を処理できるはずなので、どうすればよいかわかりません...
助けてくれる人に感謝します...
[編集]ここでもこれらの手順を試しましたが、同じ「DLLが見つかりません」というエラーが返されます...環境変数「R_home」をc/program files/R/Rを直接指すように変更しない限りi386 サブディレクトリではなく、2.12 ディレクトリに移動します。
正しい場所を指している場合、これらのエラーが返されます。これはもう少し有望に見えます...しかし、それでもかなり悪いです!
.......................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