共用方式為


針對 Azure 自動化中的 Python 套件問題進行疑難解答

本文說明如何在 Azure 沙盒環境和混合式 Runbook 背景工作角色上執行的 Azure 自動化中匯入、管理及使用 Python 套件。 您應該在混合式 Runbook 背景工作角色上下載 Python 套件,以成功執行工作。 若要協助簡化 Runbook,您可以使用 Python 封裝來匯入需要的模組。

備註

Azure 自動化可讓您復原在過去 29 天內刪除的 Runbook。 您可以在自動化帳戶中將 PowerShell 腳本作為作業加以執行,以還原已刪除的 Runbook。 如需詳細資訊,請參閱還原已刪除的 Runbook

匯入 Python 2 套件

  1. 從您的自動化帳戶中,選取 [共用資源] 下的 [Python 套件]。 選取 [+ 新增 Python 套件 ]

  2. 在 [新增 Python 套件] 頁面上,選取要上載的本機套件。 此套件可以是 .whl.tar.gz 檔案。

  3. 輸入名稱,然後將 [執行階段版本 ] 選為 "2.x.x"。

  4. 選擇 匯入

匯入套件之後,它會列在自動化帳戶中的 [Python 套件 ] 頁面上。 若要移除套件,請選取套件並選取 [刪除 ]

匯入具有相依性的套件

Azure 自動化不會在匯入程式期間解析 Python 套件的相依性。 使用下列其中一種方法匯入具有其所有相依性的套件。

方法 1:手動下載

在具有 Python 2.7 和 Python 套件安裝程式的 Windows 64 位電腦上,執行下列命令來下載套件及其所有相依性:

C:\Python27\Scripts\pip2.7.exe download -d <output-directory> <package-name>

下載套件及其所有相依性之後,您就可以將它們匯入自動化帳戶。

方法二:使用 Runbook

若要取得 Runbook, 請將 Python 2 套件從 pypi 匯入 Azure 自動化帳戶

當您啟動 Runbook 時,請確定下列事項:

  • [執行設定] 底下的 [執行開啟] 選項會設定為 Azure

  • Runbook 會以下列參數啟動,且每個參數都是使用 switch來定義。

    • -s <subscriptionId>
    • -g <resourceGroup>
    • -a <automationAccount>
    • -m <modulePackage>

    Runbook 可讓您指定要下載的套件。 例如,將 -m 參數設定為 Azure 以下載所有 Azure 模組和所有相依性(大約 105 個套件)。

  • Runbook 需要受控識別,自動化帳戶才能運作。

Runbook 執行完成之後,您可以在自動化帳戶中的 [共享資源] 下檢查 Python 套件,以確認套件已正確匯入。

預設 Python 3 套件

若要在自動化服務中支援 Python 3.8 Runbook,預設會安裝一些 Python 套件。 如需詳細資訊,請參閱 預設 Python 套件。 將 Python 套件匯入您的自動化帳戶,即可覆寫預設版本。 您的自動化帳戶偏好使用匯入的版本。 若要匯入單一套件,請參閱 匯入 Python 3 套件。 若要匯入具有多個套件的套件,請參閱 匯入具有相依性的 Python 3 套件

備註

Python 3.10 (預覽版) 未安裝預設套件。

匯入 Python 3 套件

  1. 從您的自動化帳戶中,選取 [共用資源] 下的 [Python 套件]。 然後,選取 [+ 新增 Python 套件]。

  2. 在 [新增 Python 套件] 頁面上,選取要上載的本機套件。 套件可以是適用於 Python 3.8 的 .whl.tar.gz 檔案,以及適用於 Python 3.10 的 .whl 檔案(預覽)。

  3. 輸入名稱,然後選取 [運行時間版本 ] 作為 [Python 3.8] 或 [Python 3.10] (預覽)。

  4. 選擇 匯入

匯入套件之後,它會列在自動化帳戶中的 [Python 套件] 頁面上。 若要移除套件,請選取套件並選取 [刪除 ]

匯入具有相依性的 Python 3 套件

您可以將 Python 腳本 import_py3package_from_pypi.py 匯入 Python 3.8 Runbook,以匯入 Python 3.8 套件及其相依性。 請確保您的自動化帳戶已啟用受控身份,並具有自動化貢獻者存取權,以便成功匯入該套件。

將腳本匯入執行手冊

如需匯入 Runbook 的詳細資訊,請參閱 從 Azure 入口網站匯入 Runbook。 將檔案從 GitHub 複製到 Azure 入口網站在執行匯入之前可以存取的記憶體。

[匯入 Runbook] 頁面會預設 Runbook 名稱,以符合指令碼的名稱。 如果您有欄位的存取權,則可以變更名稱。 Runbook 類型 可能預設為 Python 2.7。 如果是,請務必將其變更為 Python 3.8

執行運行手冊以匯入套件和其相依項目

建立並發佈 Runbook 之後,請予以執行以匯入套件。 如需執行 Runbook 的詳細資訊,請參閱 在 Azure 自動化中啟動 Runbook

指令碼 (import_py3package_from_pypi.py) 需要下列參數。

參數 說明
subscription_id 自動化帳戶的訂用帳戶識別碼
resource_group 定義自動化帳戶的資源群組名稱
automation_account 自動化帳戶名稱
module_name 要從 pypi.org 匯入的模組名稱
module_version 模組的版本

參數值應如下格式提供為單一字串:

-s <subscription_id> -g <resource_group> -a<automation_account> -m <module_name> -v <module_version>

案例:Runbook 失敗,出現「超過參數長度」錯誤

使用這些參數的 Runbook 失敗,並出現下列錯誤:

Runbook 參數名稱和值的長度總計超過 30,000 個字元的限制。 若要避免此問題,請使用自動化變數將值傳遞至 Runbook。

原因

Python 2.7、Python 3.8 和 PowerShell 7.1 Runbook 對於提供的所有參數,字元總數都有限制。 所有參數名稱和值的總長度不能超過 30,000 個字元。

解決辦法

若要解決此問題,請使用 Azure 自動化變數將值傳遞至 Runbook,或縮短參數名稱和值,使其總計不超過 30,000 個字元。

參考資料