「折腾」Docker + pipenv 运行 Python 项目

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq  FeedsPub-wdssmq

前言

「笔记」和「操作手册」应该怎么区分呢?

正文

有一些使用 Github Actions 跑 Python 的项目,其中一种方案是使用 Docker + pipenv,后者是 Python 的包管理工具,类似于 npm;

本文将记录如何在自建 Linux 环境使用该方案……

# 克隆项目
GIT_PATH=~/Git
git clone [email protected]:VaultVulp/action-pipenv.git $GIT_PATH/action-pipenv

# 构建 Docker 镜像
cd $GIT_PATH/action-pipenv
docker build -t py-pipenv .

· 执行 mkdir -p ~/test/py-pipenv 创建测试目录,然后在该目录下创建main.py文件,内容如下:

import json
import feedparser
import pprint

# 读取 rss
rss_list = feedparser.parse('https://www.wdssmq.com/feed.php')
# 提取标题和链接
rlt_list = [{'title': entry['title'], 'link':entry['link']} for entry in rss_list['entries']]
# 打印结果
pprint.pprint(rlt_list)
# 保存为 json 文件
with open('output.json', 'w') as f:
    json.dump(rlt_list, f)

· 在该目录下创建Pipfile文件,内容如下:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[scripts]
main = "python main.py"

[packages]
feedparser = "*"
# 运行之构建虚拟环境(virtualenv)
PY_DIR=~/test/py-pipenv
ENVS_DIR=${PY_DIR}/virtualenvs
docker run --name py-run \
    --rm \
    --workdir /app \
    -v ${PY_DIR}:/app \
    -v ${ENVS_DIR}/:/root/.local/share/virtualenvs \
    py-pipenv \
    "install -d"

· 在${PY_DIR}内会生成virtualenvs目录,其中包含了虚拟环境的相关文件,在 Pipfile 内依赖项不变的情况下只需要执行一次构建;

# 运行实际代码
PY_DIR=~/test/py-pipenv
ENVS_DIR=${PY_DIR}/virtualenvs
docker run --name py-run \
    --rm \
    --workdir /app \
    -v ${PY_DIR}:/app \
    -v ${ENVS_DIR}/:/root/.local/share/virtualenvs \
    py-pipenv \
    "run main"

· 相当于执行了pipenv run main,在${PY_DIR}内会生成output.json文件;

补充

  • --rm 参数表示运行完毕后自动删除容器;
  • --workdir 指定工作目录;
  • -v 挂载目录到容器内;
  • py-pipenv 是前边构建镜像指定的名称;
  • "install -d""run main" 将作为参数传递给容器内的 pipenv 命令;

相关链接

「小事」Python 的 Docker 镜像更新了一波_杂七杂八_沉冰浮水:

https://www.wdssmq.com/post/20210820542.html

VaultVulp/action-pipenv: Use pipenv commands in your GitHub Actions Workflow:

https://github.com/VaultVulp/action-pipenv


爱发电

本文标题:《「折腾」Docker + pipenv 运行 Python 项目》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20220531665.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

搜索

本周旧文

2024 年了,姑且备份下嘟特存档。。

……,一个不知名的小众样式库 + 内联样式混写这种入坑姿势确实很有槽点,但是,「已经开始学」并且能够持续是绝对值得肯定的。。

在贴吧看过很多提问了,就有种错觉:好多人为了提一个问题专门注册了贴吧,问题本身可能得到有效回答,也可能没有(和提问的点及具体姿势有关。。但无论如何,之后就和注销了账号一样没有然后了,好像之后永远不用学相应的东西一样。。

《恶魔娃娃》

- 他们正研究你究竟是真正的大人,还是伪装成大人的小孩

- 我自己都研究很久了

乐高 DC 里,(基本就蝙蝠侠家,,年龄最小的那个无论是谁感觉人设都会变得一样 - -

所以,就感觉和祥林嫂一样,每天都需要向外「签到」自己的情绪感受,然而又并没有什么「需要」我这样的签到……

只要梦里出现学校的概念,形式和反抗好像也都不重要了,,天还没亮,骑自行车去上学,没走多远「想起来」并不需要上学的,下来搬起车原地调头然后推回家。。

《K 星异客》里,「青鸟」真的是等来的,或者说是突然出现然后引发改变的外部因素。。。

梦的最后也是又一次意识到教室里的同学只是幻境中的投影,被困住的只有我;虽然也终于总结出,在梦里从来没有和同学的投影有过冲突和争执,甚至还附和我反驳「管理者」身份被进一步放大并不特指某一个人的老师。。

就和大脑会突然播放某一首歌一样,「讨厌自己」这句话也是自己突然就会播放一次,然后频率更高。。

学校,学校,学校,总是梦到学校,,就好像灵魂被诅咒禁固一样。。

爱发电支持者

最新留言

友情链接

  • 订阅本站的 RSS 2.0 新闻聚合
召唤伊斯特瓦尔