Menggunakan pipenv run directory/somescript.py menyebabkan pipenv gagal, karena mencari directory/somescript.py di PATH
$ python -V
python 3.6$ pipenv --version
masterpipenv menjalankan skrip menggunakan lingkungan virtual yang dibuat
Langkah 26/29 : RUN ls $PROJECT_PATH | grep setup.py
---> Berjalan di 7811236ec5ee
setup.py
Menghapus wadah perantara 7811236ec5ee
---> ba280fab02c3
Langkah 27/29 : RUN pipenv run $PROJECT_PATH/setup.py develop
---> Berjalan di b48df28fbe12
Kesalahan: perintah /opt/project/setup.py tidak dapat ditemukan di dalam PATH.
ekstrak dari dockerfile:
RUN ls $PROJECT_PATH | grep setup.py
RUN pipenv jalankan $PROJECT_PATH/setup.py develop
Dan mengubah Dockerfile menjadi:
ENV SHELL=/bin/bash
RUN pipenv shell -c "$PROJECT_PATH/setup.py develop; exit $?"
menghasilkan
Spawning environment shell (/bin/bash). Use 'exit' to leave.
Traceback (most recent call last):
File "/usr/local/bin/pipenv", line 11, in <module>
load_entry_point('pipenv==9.0.3', 'console_scripts', 'pipenv')()
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 2204, in shell
do_shell(three=three, python=python, fancy=fancy, shell_args=shell_args)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 2167, in do_shell
c.interact(escape_character=None)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pexpect/pty_spawn.py", line 744, in interact
mode = tty.tcgetattr(self.STDIN_FILENO)
termios.error: (25, 'Inappropriate ioctl for device')
Saya kira Anda mungkin dapat mencapai hal yang sama dengan: pipenv run python -c "import this"
(ganti saja import this
dengan logika Anda).
@jacekjab Anda tidak dapat menjalankan shell pipenv di dalam Docker karena tidak mendukung sub shell seperti yang tercantum dalam stacktrace. pipenv run
ditujukan untuk skrip/aplikasi yang diinstal di jalur dengan shebang yang menentukan bagaimana mereka harus digunakan.
Dalam kasus Anda, saya yakin apa yang Anda cari adalah pipenv run python somescript.py
atau menambahkan Shebang ke bagian atas skrip.
Komentar yang paling membantu
@jacekjab Anda tidak dapat menjalankan shell pipenv di dalam Docker karena tidak mendukung sub shell seperti yang tercantum dalam stacktrace.
pipenv run
ditujukan untuk skrip/aplikasi yang diinstal di jalur dengan shebang yang menentukan bagaimana mereka harus digunakan.Dalam kasus Anda, saya yakin apa yang Anda cari adalah
pipenv run python somescript.py
atau menambahkan Shebang ke bagian atas skrip.