簡體   English   中英

無法在 popper 工作流程中的單獨步驟中使用 python 模塊

[英]unable to use python modules in separate steps in a popper workflow

我有一個requirements.txt文件,我在執行以下工作流時使用它:

steps:
  - id: install-python-modules
    uses: popperized/python-actions@master
    args:
    - pip install -r requirements.txt

  - id: run-script
    uses: popperized/python-actions@master
    args:
    - python my_script.py

我遇到的問題是,當run-script步驟運行時,它沒有第一步安裝的模塊。

問題是,當pip install作為第一步的一部分運行時,它會將 python 模塊安裝到容器內的/usr/local文件夾中。 由於第二步是實例化另一個容器,因此這些模塊不可用。 這在官方的 Popper 文檔中有更詳細的解釋,其中解釋了容器的命名空間和工作流所在的主機之間的關系。

使用官方 python docker 映像並明確處理 virtualenv 可能會有所幫助:

steps:
- id: install-requirements
  uses: docker://python:3.8-slim-buster
  runs: [bash, -uec]
  args:
  - |
    python -mvenv venv/
    source venv/bin/activate
    pip install -r requirements.txt

- id: run-sim
  uses: docker://python:3.8-slim-buster
  runs: [bash, -uec]
  args:
  - |
    source venv/bin/activate
    python my_script.py

第一步在從中調用popper run的文件夾( venv/文件夾)上創建一個虛擬環境,並在那里安裝需求。 第二個在運行腳本之前加載環境。

您可能想知道如何python:3.8-slim-buster docker hub 上的官方鏡像一般分為三種類型,它們基於 1) full debian, 2) debian-slim 和 3) alpine。 我通常使用 python 的最新穩定版本(截至今天為 3.8),並從 alpine 開始,因為與 debian 圖像相比,它的占用空間很小。 如果要求使用系統庫(例如numpy ),alpine 通常不起作用,因為沒有預編譯的二進制文件(輪子),所以我轉向基於 debian 的圖像的苗條變體

暫無
暫無

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

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