ルートディレクトリでpipenv install
を実行したときの動作が変更されたため、今朝、Dockerビルドが失敗しました。
最新バージョン(2020.5.28)で実行すると、依存関係がビルドおよびインストールされた後にエラーがスローされますERROR: Pipenv is not intended to work under the root directory, please choose another path.
これは、#3434で発生した問題に関連して、#3386で導入された変更のようです。
この問題は、現在言及されていないように見えるため、この動作の変更は変更ログに壊れているものとしてリストする必要があることを指摘するだけです。
当面は、 pipenv
を最後のバージョン(2018.11.26)に固定することでこれを回避しました。
該当なし
該当なし
該当なし
こんにちは@ gps035 、
pipenvでも同じ問題が発生しています。
pipenv
バージョンをどのように固定したかを教えてください。
ありがとう
この動作はバージョン2018.11.26
では発生しないことを確認できます。
@mohamedMokこのpip install 'pipenv==2018.11.26'
を使用できます。
@ gps035 CHANGELOGにそれを記載するためにPRを送信するチャンスはありますか?
この問題に対処するためにPRを提出しました。皆さんに感謝します。
面白い重大な変更ではありません。すべてのドッカーはビルド中にpipenvインストールを使用しています:/
https://github.com/pypa/pipenv/issues/4273#issuecomment -635303079の修正を使用して、同じ問題が発生しました。
ルートディレクトリで
pipenv install
を実行したときの動作が変更されたため、今朝、Dockerビルドが失敗しました。
ここでワークフローを説明できますか? --system
ますか?
#4275で述べたように:
そもそも変更の主な理由は、仮想環境と関連するPythonパスを見つけることによるものです。私が知る限り、これはバグや破損の実質的な原因であり、基本的には機能しませんでした。 それがワークフローを壊しているという事実は、私がそれがまったく機能と聞いた最初のものです
これは重大な変更を意図したものではなく、以前に中断された相互作用を防ぐことを目的としています-これが機能していた人のために、pipenvに渡したコマンドライン引数の完全なセットを含めてください(例: pipenv install --<whatever>
およびワークフローに関する情報:
--system
をpipenvに渡したり、独自のvirtualenvを作成したり、pipenvに仮想環境の作成を許可したりしましたか?今のところおそらくそれで十分です
@techalchemyこれは、
FROM python:3.8
RUN pip install --no-cache-dir pipenv
RUN pipenv install --system --deploy
@techalchemyユースケースを調査していただきありがとうございます。 別の例を次に示します。
--system
フラグが渡されていません問題の調査または再現に役立つ場合は、ビルド手順がこのMaketargetに表示されます。
--system
で最新のpipenvを使用したい場合は、次のようにWORKDIRを設定し、Pipfile / lockfileをコピーしてDockerfileを調整すると便利です。
WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
COPY . /code/
python:3-slim
docker image、 Debian GNU/Linux 10
が付属していますFROM python:3-slim AS base
ENV PYROOT /pyroot
ENV PYTHONUSERBASE $PYROOT
ENV PATH $PATH:$PYROOT/bin
FROM base AS builder
RUN pip install pipenv
COPY Pipfile* ./
RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
--system
で最新のpipenvを使用したい場合は、次のようにWORKDIRを設定し、Pipfile / lockfileをコピーしてDockerfileを調整すると便利です。WORKDIR /code COPY Pipfile Pipfile.lock /code/ RUN pip install pipenv && pipenv install --system COPY . /code/
これは私のために働いた。 前に/code
ディレクトリを作成することを忘れないでください。
これは私のために働いた。 前に
/code
ディレクトリを作成することを忘れないでください。
WORKDIRコマンドは、ディレクトリが存在しない場合、すでにディレクトリを作成しています
WORKDIR
してもうまくいきませんでした。 エラーが発生します
Step 9/9 : RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
---> Running in da6fa387210f
Installing dependencies from Pipfile.lock (387af5)…
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
^Cmake: *** [build-image-base] Interrupt: 2
以下のdockerfileを使用する場合
FROM python:3-slim AS base
ENV PYROOT /pyroot
ENV PYTHONUSERBASE $PYROOT
ENV PATH $PATH:$PYROOT/bin
FROM base AS builder
WORKDIR /build
RUN pip install pipenv
COPY Pipfile* /build/
RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
これは実際にはビルドエラーではないようです。#4220を参照してください。
追記として、 $PIP_USER
pipenvによって解除取得し、私は方法については、比較的不確実だ$PYTHONUSERBASE
それと相互作用
また、 --deploy
フラグは、 --ignore-pipfile
フラグでは意味がありません。 --deploy
は、 Pipfile
とPipfile.lock
を保証するために使用されます。 Pipfile.lock
は対応するPipfile
から生成されています。 pipfileを無視することを指定した場合、このチェックは実行されません。
いずれにせよ、 @ killuazhuに含めたログのエラーは、Pythonパスの操作に関連している可能性がありますが、別の問題を提出できる場合は、さらに調査する必要があります。
参考までに、#3434の元の問題は、Pipfileなしで/
下でpipenv install
しようとしたときに発生します。 そして、このチケットでのセットアップはにあるpipenv install
の下に/
2018年11月26日に作業をすることに使用されるPipfile、と。 ただし、#3386は、ルートディレクトリからの使用を完全に防ぐという、間違った解決方法を選択しました。
修正していただきありがとうございます。修正がpypiパッケージの新しいリリースにいつ含まれるかについてのETAはありますか?
すべてのリグレッションの問題が修正され、新しいリリースが来週にリリースされることを確認する必要があります
素晴らしいありがとう、ありがとう!
この動作はバージョン
2018.11.26
では発生しないことを確認できます。@mohamedMokこの
pip install 'pipenv==2018.11.26'
を使用できます。
python3 -m pipenv install --three --system
実行すると、わずかに異なるエラーが発生していました
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
古いバージョンへの固定も私のために働いた。 ありがとう!
この動作はバージョン
2018.11.26
では発生しないことを確認できます。
@mohamedMokこのpip install 'pipenv==2018.11.26'
を使用できます。
python3 -m pipenv install --three --system
実行すると、わずかに異なるエラーが発生していましたOutput: Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
古いバージョンへの固定も私のために働いた。 ありがとう!
私は同じ問題を抱えています。 回避策として古いバージョンに固定するようになりました
すべてのリグレッションの問題が修正され、新しいリリースが来週にリリースされることを確認する必要があります
この問題は、2020.6.2リリースでも引き続き発生します。
出力:
パスの読み込みに失敗しました:/ bin / sh:1:/root/.local/share/virtualenvs/app-lp47FrbD/bin/python:見つかりません
この問題が2020.6.2リリースで修正される予定かどうかを確認してください。
次のDockerfile
この問題が発生していることを確認できます
FROM python:3.7-slim
ENV LC_ALL C.UTF-8
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get upgrade && \
apt-get install -y --no-install-recommends libldap2-dev libsasl2-dev libssl-dev && \
apt-get clean autoclean && rm -rf /var/lib/apt/* /var/cache/apt/* && \
apt-get autoremove --purge && \
pip install pipenv --no-cache-dir
WORKDIR /app
COPY Pipfile Pipfile.lock ./
RUN pipenv install --deploy --system --verbose
ENTRYPOINT ["uvicorn", "web.main:app", "--host", "0.0.0.0"]
EXPOSE 8000/tcp
@frostming問題を再開していただけますか?
次のDockerfileでこの問題が発生していることも確認できます。
FROM python:3.7.6-slim-stretch
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY . /app
RUN pip install --upgrade pip
RUN pip install pipenv
RUN pipenv install --system --deploy --ignore-pipfile
CMD ["/bin/bash", "scripts/entrypoint.sh"]
エラーは次のとおりです。
Step 10/11 : RUN pipenv install --system --deploy --ignore-pipfile
---> Running in 00386bcedd89
Installing dependencies from Pipfile.lock (d14b54)…
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
まだこの問題を抱えている人にとって、最も簡単な修正は、 Dockerfileを次のように構成すること
FROM python:3.7-slim
# Set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv==2018.11.26 && pipenv install --system # <- this is the fix
...
最も参考になるコメント
この動作はバージョン
2018.11.26
では発生しないことを確認できます。@mohamedMokこの
pip install 'pipenv==2018.11.26'
を使用できます。