2017-07-26 7 views
0

Meine R-Version ist 3.4.1, Python-Version 3.5.2 ist, und O ist Ubuntu 16.04.2Mit rPython Import numply mit Python 3.5

Ich habe RPYTHON_PYTHON_VERSION gesetzt = 3.5 bei rPython Installation, die mein Standard ist Python-Version für rPython.

♥ python.exec('import sys') 
♥ python.exec('print(sys.version)') 
3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] 

Wenn ich numpy durch rPython importieren (. Kein Problem ist, mit dem Import numpy in Python 3.5, funktioniert alles einwandfrei), ich habe diese:

♥ python.exec('import numpy') 
Error in python.exec("import numpy") : 
Importing the multiarray numpy extension module failed. Most 
likely you are trying to import a failed build of numpy. 
If you're working with a numpy git repo, try `git clean -xdf` (removes all 
files not under version control). Otherwise reinstall numpy. 

Original error was: /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so: undefined symbol: PyType_GenericNew 

Allerdings, wenn ich gesetzt RPYTHON_PYTHON_VERSION = 2 und neu installieren rPython, der Import numpy funktioniert. Wie kann ich numpy unter rPython mit Python 3.5 erfolgreich importieren?

Antwort

0

Erstens, können Sie alle Pakete in Python 3.5.3 von R/rPython importieren?

Ich habe auch dieses Problem. Der Fehler, den ich bekomme, ist genau der gleiche wie die Poster (numpy wird nicht geladen). Ich habe später festgestellt, dass ich keine Pakete importieren kann. Ich kann jedoch Pakete in Python 2.7.13 und Python 3.5.3 importieren (nur nicht über R/rPython). Dies führt mich zu der Annahme, dass dies ein 'rPython' R-Paketfehler ist. Hier sind die Dinge, die ich versucht habe, um dies zu beheben:

1) Ich habe versucht, installieren/neu installieren das R-Paket rPython entweder Python 2.7.13 oder Python 3.5.3 zu verwenden. Ich konnte R verbinden 2.7.13 über Neuinstallation des rPython Pakets Python:

install.packages("rPython",lib= "home/myusername/R/x86_64-pc-linux-gnu-library/3.4", configure.vars= "RPYTHON_PYTHON_VERSION=2") 

Mit "RPYTHON_PYTHON_VERSION = 3" während in ähnlicher Weise mir R mit Python 3.5.3 zu verbinden erlaubt zu installieren. Ich könnte "import numpy" von R aufrufen, wenn rPython mit Python 2.7.13 verbunden war, aber nicht, wenn es mit 3.5.3 verbunden ist.

2) Ich habe alle numpy und scipy's aufgespürt, die zuvor installiert und deinstalliert wurden. Ich hatte mehrere Kopien von jedem für Python 2.7.13 und Python 3.5.3. Die Neuinstallation mit pip und pip3 behob das Problem nicht (ich habe R vorher neu gestartet, um sicher zu sein).

Aus beiden Konten scheint dies ein Problem mit dem R-Paket 'rPython' zu sein. Sie könnten das neuere "Netz" -Paket von R ausprobieren und sehen, ob das für Sie besser funktioniert. Allerdings war es mir nicht möglich, parallele Threads zu verwenden, wenn ich reticulate nutze, um R mit Python zu verbinden, und das ist leider das, was ich tun muss. Threading funktionierte jedoch perfekt, wenn 'rPython' verwendet wurde, aber das Paket, das ich brauche, benötigt python 3+. Ich werde weiterhin Fehler beheben und diesen Beitrag aktualisieren, wenn ich es lösen kann. In der Zwischenzeit, geben Sie "reticulate" eine Chance, es ist ein sehr ordentliches Paket.

BEARBEITEN Ich konnte numpy von Python 3.5.3 in R mit dem 'reticulate' Paket laden.

EDIT2 Für diejenigen, die diesen Beitrag in die Zukunft zu finden, habe ich die einzige Lösung python3 Code zu verwenden, mit Multithreading von R war finden konnten Python-Dateien mit System (python3 "path_to_python_script" arg1 arg2 arg3)

+0

anrufen Danke Bartimus, ich habe versucht, reticulate (es ist von Rstudio Jungs entwickelt und retikulierte Python ist die längste Schlange der Welt lol) und es kann mit Python 3.5 numpy importieren. Und beantworte deine Frage, ja, ich kann einige andere Pakete importieren, zB pymongo, datetime und bson, außer numpy unter rPython mit python 3.5. Das Einzige, was mich interessiert, ist python3 in R zu integrieren, damit du mir wirklich dabei hilfst, Danke noch einmal. –