1

Ich erstelle und paketiere ein Python (2.7) -Programm, um eine Lambda-Funktion auf Amazaon WS zu erstellen. Das Programm, das ich habe, ist abhängig von der PySha3 package, die im Wesentlichen ein Python-Wrapper um das optimierte Sha3C-Paket ist. Pysha3 importiert eine C-Datei; Der Quellcode dieser zwei Dateien kann in this Github Repository gesehen werden.Verpacken eines Python-Programms, das einen C-Compiler benötigt

Um ein Paket in die Lambda-Plattform zu importieren, müssen die gesamte Datei und alle Abhängigkeiten gezippt und hochgeladen werden. Wenn ich dies tue und versuche, das Paket nach dem Upload zu testen, bekomme ich einen Fehler, dass die Sha3-Klassen, die aus der C-Datei importiert werden, die in PySha3s Paket enthalten ist, nicht gefunden werden können. Als Ergebnis meiner eigenen Recherchen und Fehlerbehebungen habe ich beschlossen, ein Pysha3-Rad im Stammverzeichnis meines Programms zu installieren, von dem ich glaube, dass es der richtige ist. Allerdings, wenn ich dies tun, bekomme ich den Fehler unten:

enter image description here

ich wirklich bin der Hoffnung, dass, wenn ich das Rad bekommen korrekt installieren einen C-Compiler zu installieren und kann irgendwie den C-Compiler-Paket zusammen mit mein Programm, dass der Lambda dann funktioniert. Ich habe this compiler for Python gefunden, und ich hoffe, dass die Installation meinen Fehler lokal behebt, und wenn ich ihn vielleicht in die Zip-Datei einfüge, wird der Fehler in Lambda AWS behoben.

Also, meine Frage ist, scheint mein Denkprozess gültig? Gibt es auch Tipps/Anleitungen, wie man den Compiler in eine gezippte Datei einfügt, damit sie tatsächlich verwendet wird? Ich bin sehr neu in all dem, also wird alles helfen. Vielen Dank!

Antwort

1

Um eine Binärdatei für Lambda zu paketieren, müssen Sie jeden nativen Code in der richtigen Umgebung erstellen. Es scheint, dass Sie versuchen, auf einer Windows-Maschine aufzubauen - selbst wenn Ihre Build funktionierte, wäre die resultierende Binärdatei nicht für die Lambda-Ausführungsumgebung geeignet.

Die aktuelle unterstützte Umgebung ist in den Lambda Execution Environment Leitfaden dokumentiert, die auch besagt:

Wenn Sie nativen Binärdateien in Ihrem Code verwenden, stellen Sie sicher, dass sie in dieser Umgebung zusammengestellt.

+0

Vielen Dank für diese Info - ich werde versuchen, von hier aus zu arbeiten! – Liv

+0

Ich nahm die kompilierte Binärdatei von der Paketseite (https://pypi.python.org/pypi/pysha3), entpackte sie mit 7z auf meinem Windows-PC und fügte dann die kompilierten Binärdateien zu meinem Projektverzeichnis hinzu. Upload des gezippten Projektverzeichnisses mit der kompilierten Linux-Binärdatei funktioniert! Ich benutzte pysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whl – Meir

Verwandte Themen