Build buruh pelabuhan kami gagal pagi ini karena perubahan perilaku saat menjalankan pipenv install
di direktori root.
Saat menjalankan dengan versi terbaru (2020.5.28) kesalahan muncul setelah dependensi dibuat dan diinstal ERROR: Pipenv is not intended to work under the root directory, please choose another path.
Sepertinya ini adalah perubahan yang diperkenalkan di # 3386, terkait dengan masalah yang diangkat di # 3434.
Masalah ini sebenarnya hanya untuk menunjukkan bahwa perubahan perilaku ini harus dicantumkan sebagai melanggar di changelog, karena saat ini tampaknya tidak disebutkan.
Untuk saat ini kami telah mengatasi ini dengan menyematkan pipenv
ke versi terakhir (2018.11.26).
T / A
T / A
T / A
hai @ gps035 ,
Saya mengalami masalah yang sama dengan pipenv.
Bisakah Anda menunjukkan bagaimana Anda memasang pin pada versi pipenv
?
Terima kasih
Saya dapat memastikan bahwa perilaku ini tidak terjadi pada versi 2018.11.26
.
@mohamedMok Anda dapat menggunakan pip install 'pipenv==2018.11.26'
yang merupakan versi terakhir yang tidak memiliki perubahan yang mengganggu ini.
@ gps035 Adakah kesempatan mengirim PR untuk menyebutkannya di CHANGELOG?
Saya telah mengajukan PR untuk mengatasi masalah ini, terima kasih untuk semuanya.
Bukan perubahan yang lucu, semua buruh pelabuhan kami menggunakan pemasangan pipenv selama pembuatan: /
Mengalami masalah yang sama, menggunakan perbaikan di https://github.com/pypa/pipenv/issues/4273#issuecomment -635303079 berhasil untuk saya.
Build buruh pelabuhan kami gagal pagi ini karena perubahan perilaku saat menjalankan
pipenv install
di direktori root.
dapatkah Anda menjelaskan alur kerjanya di sini - apakah Anda menggunakan --system
?
Seperti yang baru saya sebutkan di # 4275:
Alasan utama untuk perubahan di tempat pertama adalah karena lokasi lingkungan virtual & jalur python terkait - sejauh yang saya ketahui, ini adalah penyebab utama dari bug dan kerusakan dan pada dasarnya tidak berfungsi. Fakta bahwa itu merusak alur kerja adalah yang pertama saya dengar itu berfungsi sama sekali.
Ini tidak dimaksudkan sebagai perubahan yang mengganggu, ini dimaksudkan untuk mencegah interaksi terputus sebelumnya - untuk siapa saja yang telah bekerja, harap sertakan set lengkap argumen baris perintah yang Anda berikan ke pipenv (mis. pipenv install --<whatever>
dan informasi tentang alur kerja Anda:
--system
ke pipenv, membuat virtualenv Anda sendiri, atau mengizinkan pipenv membuatkannya untuk Anda?Itu mungkin cukup untuk saat ini
@techalchemy Ini adalah bagian relevan dari Dockerfile kami yang tidak lagi berfungsi.
FROM python:3.8
RUN pip install --no-cache-dir pipenv
RUN pipenv install --system --deploy
@techalchemy Terima kasih telah menyelidiki kasus penggunaan. Berikut contoh lainnya:
--system
tidak dikirimkanJika berguna untuk menyelidiki atau mereproduksi masalah, langkah-langkah build dapat dilihat dalam Buat target ini .
Bagi siapa saja yang ingin menggunakan pipenv terbaru dengan --system
, mengadaptasi Dockerfile Anda dengan menyetel WORKDIR dan menyalin Pipfile / lockfile Anda ke dalamnya sebagai berikut mungkin bisa membantu:
WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
COPY . /code/
python:3-slim
gambar buruh pelabuhan, dilengkapi dengan 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
Bagi siapa saja yang ingin menggunakan pipenv terbaru dengan
--system
, mengadaptasi Dockerfile Anda dengan menyetel WORKDIR dan menyalin Pipfile / lockfile Anda ke dalamnya sebagai berikut mungkin bisa membantu:WORKDIR /code COPY Pipfile Pipfile.lock /code/ RUN pip install pipenv && pipenv install --system COPY . /code/
Ini berhasil untuk saya. Ingatlah untuk membuat /code
dir sebelumnya.
Ini berhasil untuk saya. Ingatlah untuk membuat
/code
dir sebelumnya.
perintah WORKDIR sudah membuat direktori jika tidak ada
Menggunakan WORKDIR
tidak berhasil untuk saya. Saya mendapatkan kesalahan
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
saat menggunakan dockerfile di bawah ini
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
ini tampaknya bukan kesalahan build, lihat # 4220
Sebagai catatan kecil, $PIP_USER
tidak disetel oleh pipenv dan saya relatif tidak yakin tentang bagaimana $PYTHONUSERBASE
berinteraksi dengannya
Juga, tanda --deploy
akan menjadi tidak berguna dengan tanda --ignore-pipfile
- --deploy
digunakan untuk menjamin bahwa Pipfile
dan Pipfile.lock
sejajar, yaitu Pipfile.lock
dihasilkan dari Pipfile
. Jika Anda menunjukkan bahwa Anda ingin mengabaikan pipfile Anda, pemeriksaan ini tidak akan pernah terjadi.
Dalam kasus apa pun @killuazhu , kesalahan di log yang Anda sertakan mungkin terkait dengan manipulasi jalur python Anda, tetapi akan memerlukan penyelidikan lebih lanjut jika Anda dapat mengajukan masalah terpisah
Sebagai referensi, masalah asli # 3434 terjadi ketika seseorang mencoba pipenv install
bawah /
tanpa Pipfile. Dan pengaturan di tiket ini menjadi pipenv install
bawah /
dengan Pipfile, yang dulunya berfungsi pada 2018.11.26. Namun, # 3386 memilih pendekatan resolusi yang salah, yang mencegah penggunaan dari direktori root sepenuhnya.
Terima kasih telah memperbaikinya, apakah Anda memiliki ETA tentang kapan perbaikan tersebut akan disertakan dalam rilis baru paket pypi?
kami perlu memastikan semua masalah regresi telah diperbaiki dan rilis baru akan keluar minggu depan
Luar biasa terima kasih, hargai!
Saya dapat memastikan bahwa perilaku ini tidak terjadi pada versi
2018.11.26
.@mohamedMok Anda dapat menggunakan
pip install 'pipenv==2018.11.26'
yang merupakan versi terakhir yang tidak memiliki perubahan yang mengganggu ini.
Saya mendapatkan kesalahan yang sedikit berbeda saat menjalankan python3 -m pipenv install --three --system
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Menyematkan ke versi lama juga berhasil untuk saya. Terima kasih!
Saya dapat memastikan bahwa perilaku ini tidak terjadi pada versi
2018.11.26
.
@mohamedMok Anda dapat menggunakanpip install 'pipenv==2018.11.26'
yang merupakan versi terakhir yang tidak memiliki perubahan yang mengganggu ini.Saya mendapatkan kesalahan yang sedikit berbeda saat menjalankan
python3 -m pipenv install --three --system
Output: Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Menyematkan ke versi lama juga berhasil untuk saya. Terima kasih!
Saya mengalami masalah yang sama. Sekarang menyematkan ke versi lama sebagai solusinya
kami perlu memastikan semua masalah regresi telah diperbaiki dan rilis baru akan keluar minggu depan
Masalah ini masih ada di rilis 2020.6.2:
Keluaran:
Gagal memuat jalur: / bin / sh: 1: /root/.local/share/virtualenvs/app-lp47FrbD/bin/python: tidak ditemukan
Bisakah Anda mengonfirmasi jika masalah ini diharapkan dapat diperbaiki pada rilis 2020.6.2?
Saya dapat mengonfirmasi bahwa saya mengatasi masalah ini dengan 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 Bisakah Anda membuka kembali masalahnya?
Saya juga dapat mengonfirmasi bahwa saya mengalami masalah ini dengan Dockerfile berikut:
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"]
Inilah kesalahannya:
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
Untuk orang-orang yang masih mengalami masalah ini, perbaikan termudah adalah dengan mengkonfigurasi Dockerfile Anda sebagai:
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
...
Komentar yang paling membantu
Saya dapat memastikan bahwa perilaku ini tidak terjadi pada versi
2018.11.26
.@mohamedMok Anda dapat menggunakan
pip install 'pipenv==2018.11.26'
yang merupakan versi terakhir yang tidak memiliki perubahan yang mengganggu ini.