簡體   English   中英

如何在Azure webapp上安裝bcrypt?

[英]How to pip install bcrypt on Azure webapp?

披露:第一次Azure體驗

我正在為Azure Webapp部署Flask應用程序。 所有部署步驟都沒問題,直到我點擊bcrypt軟件包安裝並且它失敗了。

經過大量基於錯誤日志輸出的研究,我發現我可能需要使用wheelhouse(* .WHL)安裝bcrypt

我從這里下載了以下文件

  • bcrypt-3.1.0-cp27-cp27m-win32.whl
  • bcrypt-3.1.0-cp27-cp27m-win_amd64.whl

然后我把它們復制到D:\\home\\site\\repository\\wheelhouse

然后,我通過KUDU激活virtualenv並運行此命令:

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

我沒有收到任何消息或任何日志輸出。 當我運行pip freeze > tmp.txt我得到一個空白文件。

但是當我運行d:\\python27\\scripts\\pip install -r requirements.txt --find-links d:\\home\\site\\repository\\wheelhouse

它開始安裝軟件包,直到它變為bcrypt並且它出錯並顯示以下消息:

跳過bcrypt-3.1.0-cp27-cp27m-win32.whl因為它與這個Python不兼容

這是一個令人困惑的消息,因為輪子是為Python 2.7

由於我的Flask應用程序在我的Linux和Windows開發機器上運行良好,我繼續在我的Windows計算機上創建自己的brypt輪文件,該文件在Azure上運行相同的Python版本。 我上傳了新的.whl.whl上面的步驟,我仍然得到相同的錯誤消息

額外說明:

  • Azure控制台上的python -V返回2.7.8
  • python -V雖然virtualenv被激活也返回2.7.8
  • Azure門戶>應用程序設置顯示“Python版本2.7”和“平台32位”。
  • 部署之后,除了bcrypt之外,還安裝了requirements.txt中的所有軟件包。
  • 訪問網頁會出現500錯誤(我希望由於缺少lib而導致錯誤)
  • 我刪除了virtualenv,GIT按照這里所述的requirements.txt頂部的--find-links wheelhouse推送了repo。
    但是,我得到一個Unable to find vcvarsall.bat錯誤。 這就是為什么我試圖通過車輪手動安裝
  • 我刪除了整個virtualenv,上傳了所有必需包的wheel文件到\\ repository \\ wheelhouse,並添加了--no-index到我的pip install命令。 除了bcrypt之外,所有東西都安裝好了。

  • 我嘗試了bcrypt==3.1.1bcrypt==3.1.0而只是bcrypt而沒有指定版本,它沒有任何區別。

我沒有想法了。 誰知道什么是錯的? 如何在Azure webapp上安裝bcrypt?

我終於能夠讓Flask應用程序在Azure Webapps上運行。 不幸的是,我無法使用我常用的開發工具。

方案

  • 我使用requirements.txt文件在Visual Studio中創建了一個VirtualEnv
  • 將我的Flask代碼移動到Visual Studio
  • 單擊“發布到Azure Webapps”

它做它做的事情,一旦完成,你可能仍然會得到500錯誤。 如果是這種情況,請使用KUDU並查看您的web.config文件並修改WSGI_ALT_VIRTUALENV_HANDLER值以匹配您的Flask應用程序名稱。

這是我能夠正確安裝bcrypt以使我的Flask應用程序正常工作的唯一方法。 我希望這能節省寶貴的時間。

這就是所有人。

您可以嘗試使用easy_install來安裝pip無法執行此操作的依賴項。 我做的是:

  1. 進入KUDU調試控制台。 這在“開發工具”下列出
  2. 嘗試執行env\\scripts\\pip install -r requirements.txt
  3. 對於每個失敗的依賴項(如bcrypt),嘗試通過env\\scripts\\easy_install bcrypt==3.1.0安裝它

您還可以通過編輯deploy.cmd文件來嘗試自動執行此操作。 這樣,在pip失敗的任何時候,都會執行easy_install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM