Я пытаюсь развернуть код из bitbucket в AWS Elastic beanstalk. При развертывании кода из битбакета я столкнулся с проблемой импорта boto3.
Но мой старый образ докера работает нормально.
СТАРЫЙ файл Docker
ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1
RUN apk add --update --no-cache build-base python3-dev python3 libffi-dev libressl-dev bash git gettext ca-certificates curl groff less zip libstdc++ jq \
&& curl -O https://bootstrap.pypa.io/get-pip.py \
&& python3 get-pip.py \
&& pip install --upgrade --use-feature=2020-resolver six awscli awsebcli \
&& rm -rf /var/cache/apk/*
RUN apk --no-cache add python py-pip \
&& pip --no-cache-dir install --upgrade pip \
&& pip --no-cache-dir install --upgrade --user boto3 boto
RUN apk update && \
apk add --no-cache git openssh perl && \
pip install pytz tzlocal
в Python2.7 все работает нормально. когда я обновляю версию Python с 2.7 до 3.7, получаю эту ошибку импорта boto3.
Файл Docker
ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1
RUN apk add --update --no-cache build-base python3-dev python3 libffi-dev libressl-dev bash git gettext ca-certificates curl groff less zip libstdc++ jq py3-pip\
&& pip3 install --upgrade six awscli awsebcli \
&& rm -rf /var/cache/apk/*
RUN apk --no-cache add python3 py3-pip\
&& python3 -m venv env-env \
&& source env-env/bin/activate \
&& pip3 install --upgrade pip \
&& pip3 install --upgrade boto3
RUN apk update && \
apk add --no-cache git openssh perl && \
python3 -m venv env-env && \
source env-env/bin/activate && \
pip3 install pytz tzlocal
ENV PATH "$PATH:~/.local/bin"
ADD deployment-scripts /opt/deployment-scripts
Сценарий Python
from __future__ import print_function
import os
import sys
from time import strftime, sleep
import boto3
from botocore.exceptions import ClientError
from time import strftime
from datetime import datetime
from pytz import timezone
from tzlocal import get_localzone
когда я запускаю этот файл скрипта, я получаю
import boto3 ImportError: Нет модуля с именем boto3
я пытался
python3 -m pip install boto3
но я получаю ту же ошибку при запуске скрипта. помогите мне с этим.
Согласно документу по обновлению Python https://boto3.amazonaws.com/v1/documentation/api/1.16.56/guide/migrationpy3.html
мы должны перейти с python 2.7 на python3.7
когда я строю без виртуальной среды, я получаю «предупреждение: запуск pip от имени пользователя root может привести к нарушению разрешений и конфликтному поведению с системным менеджером пакетов. Вместо этого рекомендуется использовать виртуальную среду: pip.pypa. io/warnings/venv". вот почему я использую переменную env
спасибо за быстрый ответ. Я попробовал RUN apk --no-cache add python3 py3-pip\ && pip3 install --upgrade pip \ && pip3 install --upgrade boto3, но я получил ту же ошибку, что и ошибка импорта boto3.
У вас есть два варианта (а) игнорировать ошибку или (б) правильно активировать виртуальную среду. Любое решение будет работать, хотя (а), возможно, немного проще.
RUN apk --no-cache add python3 py3-pip\ && python3 -m pip install --upgrade pip \ && python3 -m pip install --upgrade boto3 это должно работать, я прав, larsks?
Я обновил ответ с помощью Dockerfile, который мне подходит.
я тоже пробовал это, но я получил ту же ошибку.
спасибо @Larsks, все работало нормально. проблема была в моей переменной