第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無法在 docker 容器中安裝依賴項(xiàng)

無法在 docker 容器中安裝依賴項(xiàng)

我正在使用poetry庫來管理項(xiàng)目依賴項(xiàng),所以當(dāng)我使用docker build --tag=helloworld .我收到了這個(gè)錯(cuò)誤[AttributeError]               'NoneType' object has no attribute 'group'  umongo (2.1.0)在包上安裝中斷這是我的pyproject.toml文件[tool.poetry.dependencies]python = "^3.7.0"asyncio = "^3.4"aiohttp = "^3.4"motor = "^2.0"umongo = "^2.0"pyyaml = "^3.13"[tool.poetry.dev-dependencies]pytest = "^3.4"black = {version = "^18.3-alpha.0",allows-prereleases = true}mypy = "^0.650.0"wemake-python-styleguide = "^0.5.1"pytest-mock = "^1.10"pytest-asyncio = "^0.9.0"pytest-aiohttp = "^0.3.0"和poetry.lock https://pastebin.com/kUjAKJHMDockerfile:FROM python:3.7.1-alpineRUN mkdir -p /opt/project/todo_apiRUN pip --no-cache-dir install poetryCOPY ./pyproject.toml /opt/projectCOPY poetry.lock /opt/projectRUN cd /opt/project && poetry install --no-devCOPY ./todo_api /opt/project/todo_apiCOPY ./todo_api.yml /opt/project/todo_api.ymlWORKDIR /opt/projectENTRYPOINT poetry run python -m aiohttp.web todo_api.main:main
查看完整描述

2 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

替代方法

不要安裝poetry到您的部署環(huán)境中。它是一個(gè)包管理工具,旨在改進(jìn)庫的開發(fā)和協(xié)作。如果你想部署一個(gè)應(yīng)用程序,你只需要一個(gè)包安裝程序(閱讀:pip)——關(guān)于構(gòu)建過程和虛擬環(huán)境的固執(zhí)己見poetry是有害的,而不是有益的。


在這種情況下,您要復(fù)制到 docker 映像中的工件是1)您最近構(gòu)建的庫和2)已測試依賴項(xiàng)的操舵室,如poetry.lock.


第一個(gè)很容易,運(yùn)行poetry build -f wheel,你有一個(gè)很好的便攜輪。第二個(gè)還不容易,因?yàn)閜oetry不支持建造操舵室(也許永遠(yuǎn)不會(huì)),并且pip wheel不接受poetry.lock的文件格式。因此,如果您想走這條路,您需要使用支持的 beta 版本poetry(v1.0.0b7相當(dāng)穩(wěn)定)poetry export -f requirements.txt > requirements.txt,它可以讓您創(chuàng)建一個(gè)requirements.txt與當(dāng)前鎖定文件等效的文件。


一旦你得到它,你可以運(yùn)行pip wheel -w dist -r requirements.txt,最后,你完成了為 docker 鏡像創(chuàng)建所有的工件?,F(xiàn)在,以下將起作用:


FROM python:3.7.1-alpine


WORKDIR /opt/project


COPY dist dist


RUN pip install --no-index --find-links dist todo_api


ENTRYPOINT python -m aiohttp.web todo_api.main:main

優(yōu)點(diǎn)

  • 在您的服務(wù)器中沒有不必要的依賴poetry(可能是相關(guān)的,因?yàn)樗匀皇?code><v1.0)

  • 您跳過服務(wù)器中的 virtualenv 并將所有內(nèi)容直接安裝到系統(tǒng)中(您可能仍然選擇自己創(chuàng)建一個(gè) virtualenv 并將您的應(yīng)用程序安裝到其中,因?yàn)?a >將您的應(yīng)用程序安裝到系統(tǒng) python 的側(cè)包中可能會(huì)導(dǎo)致問題)

  • 您的安裝步驟不會(huì)針對(duì) pypi 運(yùn)行,因此可以保證此部署在您測試時(shí)可以正常工作(這是許多業(yè)務(wù)設(shè)置中非常重要的一點(diǎn))

缺點(diǎn)

  • 每次都是手工做有點(diǎn)痛苦,這里的目標(biāo)執(zhí)行者應(yīng)該是CI/CD而不是人

  • 如果您的工作站架構(gòu)和 docker 映像不同,您構(gòu)建和復(fù)制的輪子可能不兼容


查看完整回答
反對(duì) 回復(fù) 2022-04-23
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

以下對(duì)我有用:


FROM python:3.7.1-alpine


WORKDIR /opt/project


RUN pip install --upgrade pip && pip --no-cache-dir install poetry


COPY ./pyproject.toml .


RUN poetry install --no-dev

使用 pyproject.toml:


[tool.poetry]

name = "57331667"

version = "0.0.1"

authors = ["skufler <skufler@email.com>"]


[tool.poetry.dependencies]

python = "^3.7.0"

asyncio = "^3.4"

aiohttp = "^3.4"

motor = "^2.0"

umongo = "^2.0"

pyyaml = "^3.13"


[tool.poetry.dev-dependencies]

pytest = "^3.4"

black = {version = "^18.3-alpha.0",allows-prereleases = true}

mypy = "^0.650.0"

wemake-python-styleguide = "^0.5.1"

pytest-mock = "^1.10"

pytest-asyncio = "^0.9.0"

pytest-aiohttp = "^0.3.0"

然后:


docker build --tag=57331667 --file=./Dockerfile .

結(jié)果:


...

Creating virtualenv 57331667-py3.7 in /root/.cache/pypoetry/virtualenvs

Updating dependencies

Resolving dependencies...


Writing lock file



Package operations: 15 installs, 0 updates, 0 removals


  - Installing idna (2.8)

  - Installing multidict (4.5.2)

  - Installing six (1.12.0)

  - Installing async-timeout (3.0.1)

  - Installing attrs (18.2.0)

  - Installing chardet (3.0.4)

  - Installing marshmallow (2.19.5)

  - Installing pymongo (3.8.0)

  - Installing python-dateutil (2.8.0)

  - Installing yarl (1.3.0)

  - Installing aiohttp (3.5.4)

  - Installing asyncio (3.4.3)

  - Installing motor (2.0.0)

  - Installing pyyaml (3.13)

  - Installing umongo (2.1.0)

Removing intermediate container c6a9c7652b5c

 ---> 89354562cf16

Successfully built 89354562cf16

Successfully tagged 57331667:latest


查看完整回答
反對(duì) 回復(fù) 2022-04-23
  • 2 回答
  • 0 關(guān)注
  • 328 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)