[英]how to properly reference `dir` in the step attribute of a popper workflow?
[英]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.