2016-10-04 5 views
0

Offenlegung: Azure-Erfahrung zum ersten MalWie installiere ich bcrypt in Azure webapp?

Ich stelle eine Flask-App für Azure Webapp bereit. Alle Bereitstellungsschritte sind in Ordnung, bis ich die Installation des bcrypt-Pakets getroffen habe und es fehlschlägt.

Nach viel Forschung, basierend auf Fehlerprotokoll ausgegeben, fand ich heraus, dass ich vielleicht bcrypt mit Radhaus (* .whl)

ich von here unten Dateien

  • bcrypt-3.1 heruntergeladen installieren 0,0-CP27-cp27m-win32.whl
  • bcrypt-3.1.0-CP27-cp27m-win_amd64.whl

und ich kopiert sie D:\home\site\repository\wheelhouse

Dann aktiviert ich die virtualenv durch KUDU und ich führen Sie diesen Befehl:

d:\home\site\wwwroot\env\scripts\pip install -r requirements.txt --find-links d:\home\site\repository\wheelhouse 

Ich erhalte keine Nachrichten oder jede Protokollausgabe. Wenn ich eine pip freeze > tmp.txt starte ich bekomme eine leere Datei.

Aber wenn ich laufen d:\python27\scripts\pip install -r requirements.txt --find-links d:\home\site\repository\wheelhouse

Es beginnt der Installation der Pakete, bis es zu bcrypt bekommt und es irrt mit dieser Botschaft:

Skipping bcrypt-3.1.0-CP27-cp27m-win32. whl, weil es ist nicht kompatibel mit diesen Python

, das eine verwirrende Nachricht ist, dass das Rad für Python ist 2.7

Da meine Flask-App auf meinen Linux- und Windows-Dev-Maschinen funktioniert, habe ich meine eigene Brypt-Wheel-Datei auf meinem Windows-Computer erstellt, auf der dieselbe Python-Version auf Azure ausgeführt wird. Ich lud die neue .whl, umgestrickt die oben genannten Schritte und ich immer noch die gleiche Fehlermeldung

Zusätzliche Hinweise:

  • python -V auf Azure Konsole zurück 2.7.8
  • python -V während virtualenv ist aktiviert auch zurück 2.7.8
  • Azure-Portal> Anwendungseinstellungen zeigt "Python-Version 2.7" und "Plattform 32bits".
  • Nach der Bereitstellung sind alle Pakete in der requirements.txt außer bcrypt installiert.
  • die Webseite besuchen gibt einen 500-Fehler (die ich auf fehlende lib aufgrund erwarten)
  • ich die virtualenv und GIT schob den Repo mit --find-links wheelhouse an der Spitze des requirements.txt entfernt als here angegeben.
    Allerdings bekomme ich einen Unable to find vcvarsall.bat Fehler. Deshalb versuche ich manuell über das Rad zu installieren
  • Ich löschte die gesamte virtualenv, Rad-Dateien für alle erforderlichen Pakete zu \ repository \ wheelhouse hochgeladen und --no-index zu meinem Pip-Installationsbefehl hinzugefügt.Alles wird installiert außer bcrypt.

  • Ich versuchte bcrypt==3.1.1, bcrypt==3.1.0 und nur bcrypt ohne Angabe der Version und es macht keinen Unterschied.

Ich hatte keine Ideen mehr. Wer weiß, was los ist? Wie gehe ich vor, um bcrypt in Azure webapp zu installieren?

Antwort

0

Ich konnte endlich die Flask App auf Azure Webapps arbeiten. Leider konnte ich es nicht mit meinen üblichen Entwicklungswerkzeugen machen.

Lösung:

  • habe ich eine virtualenv in Visual Studio meine requirements.txt Datei mit
  • zu Visual Studio mein Flask Code Verschoben
  • Klicken Sie auf Azure Webapps Veröffentlichen auf

Es tut, was es tut, und wenn Sie es abgeschlossen haben, können Sie immer noch einen Fehler von 500 erhalten. Wenn dies der Fall ist, verwenden Sie KUDU und sehen Sie sich Ihre web.config Datei an und ändern Sie den Wert WSGI_ALT_VIRTUALENV_HANDLER, um den Namen Ihrer Flask App zu finden.

Nur so konnte ich bcrypt korrekt installieren, damit meine Flask-App funktioniert. Ich hoffe, das spart wertvolle Zeit.

Das ist alles Leute.

0

Sie könnten versuchen, easy_install zu verwenden, um Abhängigkeiten zu installieren, die von pip fehlgeschlagen werden. Was ich tat war:

  1. Gehen Sie in Kudu Debug-Konsole. Dies ist zu finden unter Entwicklungstools
  2. Versuchen env\scripts\pip install -r requirements.txt
  3. Ausführung Für jede fehlgeschlagen Abhängigkeit (als bcrypt), versuchen Sie und installieren Sie es durch env\scripts\easy_install bcrypt==3.1.0

Sie könnten auch versuchen, dies zu automatisieren, indem Sie den deploy.cmd Datei. So dass an jedem Punkt, dass pip ausfällt, easy_install ausgeführt wird