[PYTHON] Installieren Sie Pakete, die pip nicht im Azure App Service verwenden können

Einführung

Bei der Bereitstellung einer Python-Anwendung für den Azure App Service fiel es mir schwer, Pakete zu installieren, die per Rad kompiliert werden mussten. Daher hinterlasse ich einen Hinweis: pencil2 :: notebook: Für Leser eine Übersicht über den Azure App Service und Git Es ist für diejenigen gedacht, die wissen, wie man es einsetzt. Für diejenigen, die nicht über die erforderlichen Kenntnisse verfügen, Python mit Azure App Service-Webanwendungen konfigurieren Erstellen einer Web-App mit Django unter Azure Bitte sehen Sie zuerst die Seite.

Dieses Mal wird das Paket in der folgenden Umgebung installiert.

--Python 3.4.1 32bit (standardmäßig vom App Service bereitgestellte Umgebung)

Bereitstellungsfehler

Wenn Sie Pakete installieren, für die ein Rad erforderlich ist, [Offizielle Dokumente](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-python-create-deploy-django-app # a-nametroubleshooter --- Paketinstallationa% E3% 83% 88% E3% 83% A9% E3% 83% 96% E3% 83% AB% E3% 82% B7% E3% 83% A5% E3% 83 % BC% E3% 83% 86% E3% 82% A3% E3% 83% B3% E3% 82% B0 ---% E3% 83% 91% E3% 83% 83% E3% 82% B1% E3% 83% BC% E3% 82% B8% E3% 81% AE% E3% 82% A4% E3% 83% B3% E3% 82% B9% E3% 83% 88% E3% 83% BC% E3% 83% Unabhängig davon, wie oft ich mit Bezug auf AB) bereitgestellt habe, hatte ich Probleme mit dem folgenden Fehler. Dieses Mal werden wir diesen Fehler beseitigen.

remote:   Running setup.py install for pyodbc
remote:     building 'pyodbc' extension
remote:     error: Unable to find vcvarsall.bat
remote:     Complete output from command D:\home\site\wwwroot\env\Scripts\python.exe -c "import setuptools, tokenize;__file__='D:\\home\\site\\wwwroot\\env\\build\\pyodbc\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record D:\local\Temp\pip-okpfh2du-record\install-record.txt --single-version-externally-managed --compile --install-headers D:\home\site\wwwroot\env\include\site\python3.4:
remote:     running install
remote:
remote: running build
remote:
remote: running build_ext
remote:
remote: building 'pyodbc' extension
remote:
remote: error: Unable to find vcvarsall.bat
remote:
remote: ----------------------------------------

Lokale Erstellung und Umbenennung von Dateien mit dem Rad

Azure App Service ist eine Sandbox-Umgebung. Daher kann eine durch das Umschließen von C oder C ++ erstellte Bibliothek nicht mit ** pip ** installiert werden. Um diese Pakete zu installieren, müssen Sie ** mit Rad vorgefertigt **. Außerdem muss die zu erstellende Python-Umgebung dieselbe Plattform / Architektur / Version wie der App Service haben. Das heißt, Python 2.7 32bit oder 3.4 32bit ist unter Windows erforderlich. Die C ++ - Umgebung ist auch für Python 2.7 und Python 3 vorgesehen. Bitte beachten Sie, dass dies bei com / ja-jp / download / details.aspx (Id = 5555) anders ist. Wenn die Umgebung bereit ist, führen Sie den folgenden Befehl aus.

python -m pip install --upgrade pip
pip install wheel
pip wheel azure-storage
pip wheel django-pyodbc-azure

Wenn Sie den obigen Befehl ausführen, wird eine .whl-Datei generiert. Erstellen Sie einen ** Steuerhaus ** -Ordner im Stammverzeichnis der Anwendung, die Sie bereitstellen möchten, und kopieren Sie ihn dort.

Benennen Sie dann einen Teil der kopierten .whl-Datei um. Dies war der größte Stolperstein, aber ** App Service-Bereitstellungen unterstützen nur das "none" -Tag **: confounded: (Githubs [Problem](https://github.com/Azure/azure] -storage-python / issue / 219 # issuecomment-250763151) Ich bin endlich angekommen ...) Also, cryptography-1.5.2-cp34-cp34m-win32.whl => cryptography-1.5.2-cp34 Benennen Sie cp34m vom Dateinamen in none in der Form -none-win32.whl um. In dem diesmal installierten Paket wurden Kryptografie, cffi und pyodbc umbenannt. Auch wenn Sie ein anderes Paket als das meine installieren, seien Sie bitte misstrauisch, wenn die .whl-Datei keine enthält.

Ändern Sie die Anforderungen.txt

Fügen Sie dann am Anfang von require.txt --find-links Wheelhouse hinzu. Wenn Sie jetzt Git bereitstellen, wird im Steuerhaus nach dem Paket gesucht. Darüber hinaus lautet die Anforderung.txt wie folgt.

--find-links wheelhouse
django==1.11
azure-storage==0.34.3
django-pyodbc-azure==1.11

Wenn Sie danach die Änderungen mit Git übernehmen, ist dies die Installationsumgebung.

Schließlich

Azure App Service ist sehr praktisch, aber Sie haben die Gewohnheit, Pakete zu installieren. .. .. Ich hatte den Eindruck, dass die Bereitstellung von Apps, die mit C # oder Node.js erstellt wurden, viel einfacher war.

Recommended Posts

Installieren Sie Pakete, die pip nicht im Azure App Service verwenden können
[Road to Intermediate Python] Installieren Sie Pakete in großen Mengen mit pip
Installieren Sie Pakete, die mit Python 3 kompiliert werden müssen, mit pip [Windows]
Maßnahmen, um SSL nicht mit Pycharm installieren oder importieren zu können
In pip install clang: error: unbekanntes Argument: '- mno-fused-madd'
Installieren Sie Python auf xserver, um pip zu verwenden
pipsi: Verwenden Sie das Paket, ohne das System zu verschmutzen
Verwalten Sie Python-Pakete, um sie in Containern zu installieren