2016-05-25 5 views
3

Ich frage mich, warum Python Pandas .whl-Dateien für Pip-Installation unter Linux nicht zur Verfügung stellt. Whl-Dateien sind jedoch für Mac und Windows verfügbar. Siehe: https://pypi.python.org/pypi/pandas/0.18.1Warum Python Pandas keine Linux WHL-Dateien zur Verfügung stellt

I

pip install pandas 

tun könnte Aber das beinhaltet einen zeitraubenden Prozess von der Quelle des Gebäudes. Ich habe ein Continuous-Integration-System, das Pandas als Build-Abhängigkeit enthält, daher möchte ich den Vorteil einer schnellen Installation aus einer binären .whl-Datei haben, ohne aus der Quelle zu bauen.

Antwort

5

Armin Ronacher diskutiert dies ausführlich. Grundsätzlich sind Linux-Distributionen nicht ausreichend einheitlich und Sie können nicht auf das Vorhandensein bestimmter Bibliotheken angewiesen sein, mit denen sie verlinkt werden können. Selbst die Python-Bibliothek ist möglicherweise inkonsistent.


Sie können Ihr eigenes Rad für die Umgebungen Sie verwenden, und installieren Sie sie so oft bauen, wie Sie möchten, die für eine kontinuierliche Integration System funktionieren sollte:

$ pip wheel pandas 
Collecting pandas 
    Downloading pandas-0.18.1.tar.gz (7.3MB) 
    100% |████████████████████████████████| 7.3MB 131kB/s 
... 
Successfully built pandas 

$ ls pandas* 
pandas-0.18.1-cp35-cp35m-linux_x86_64.whl 

$ pip install pandas-0.18.1-cp35-cp35m-linux_x86_64.whl 
Processing ./pandas-0.18.1-cp35-cp35m-linux_x86_64.whl 
... 
Successfully installed pandas-0.18.1 python-dateutil-2.5.3 pytz-2016.4 six-1.10.0 

Hinweis dass numpy bietet Linux-Rad-Dateien auf Pypi. Blick ins Innere (sie sind einfach zip-Dateien) können wir sehen, dass sie die üblichen numpy Bibliotheken wie lapack_lite sowie deren Abhängigkeiten (gfortran und openblas in diesem Fall) bündeln:

$ unzip -l numpy-1.11.0-cp35-cp35m-manylinux1_x86_64.whl | grep [.]so 

... 
38407360 2016-04-12 21:01 numpy/.libs/libopenblasp-r0-39a31c03.2.18.so 
    1017104 2016-04-12 21:01 numpy/.libs/libgfortran-ed201abd.so.3.0.0 
    108200 2016-04-12 21:01 numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so 
... 

dagegen die numpy durch den O installiert/S hat lapack_lite mit/usr/lib/libblas verknüpft, was über das Debian-Alternativensystem mit den optimierten libatlas verknüpft ist, so dass es eine bessere Leistung (ungetestet) haben sollte.

an den lapack Links Sehen, verwenden sie ziemlich Standardbibliotheken, so sollte es auf vielen 64-Bit-Linux-Systemen arbeiten:

$ ldd lapack_lite.cpython-35m-x86_64-linux-gnu.so 
    linux-vdso.so.1 => (0x00007fffadf7a000) 
    libopenblasp-r0-39a31c03.2.18.so => /tmp/numpy/linalg/./../.libs/libopenblasp-r0-39a31c03.2.18.so (0x00007f5efb8bc000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5efb69e000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5efb2d9000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5efafd3000) 
    libgfortran-ed201abd.so.3.0.0 => /tmp/numpy/linalg/./../.libs/libgfortran-ed201abd.so.3.0.0 (0x00007f5efacda000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007f5efe0d4000) 

Vermutlich könnte jemand freiwillig als auch Räder für Pandas zu schaffen und halten sie über die verschiedenen Versionen von Python auf dem neuesten Stand. Beachten Sie, dass die pandas .so-Dateien mit libpython verlinkt sind, aber irgendwie macht numpy dies trotz Python-Aufrufe nicht.


Bearbeiten 2016-05-25: Anweisungen für den Bau und die Installation von Rädern hinzugefügt.

+0

Danke für die Antwort. Ja, ich brauche eine Version, die neuer ist als das Standard-Repo des Betriebssystems. Ich denke, in meinem Fall muss ich entweder 1) in den sauren Apfel beißen und durch die Build-from-Source gehen, oder 2) irgendwie selbst eine WHL-Datei erstellen? – scai

+0

Ja, Sie sollten in der Lage sein, das Rad selbst zu bauen, und das wird im Rahmen Ihres Systems der kontinuierlichen Integration gut funktionieren, solange Sie für jede Testumgebung ein Rad haben. – Neapolitan

Verwandte Themen