Pipenv: Tidak dapat menjalankan skrip python tunggal oleh pipenv selama pembangunan buruh pelabuhan

Dibuat pada 2 Feb 2018  ·  3Komentar  ·  Sumber: pypa/pipenv

Menggunakan pipenv run directory/somescript.py menyebabkan pipenv gagal, karena mencari directory/somescript.py di PATH

Jelaskan lingkungan Anda
  1. Jenis OS Ubuntu
  2. Versi python: $ python -V python 3.6
  3. Versi Pipenv: $ pipenv --version master
Hasil yang diharapkan

pipenv menjalankan skrip menggunakan lingkungan virtual yang dibuat

Hasil sebenarnya

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.

Langkah-langkah untuk meniru

ekstrak dari dockerfile:
RUN ls $PROJECT_PATH | grep setup.py
RUN pipenv jalankan $PROJECT_PATH/setup.py develop

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.

Semua 3 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

FooBarQuaxx picture FooBarQuaxx  ·  3Komentar

AkiraSama picture AkiraSama  ·  3Komentar

ipmb picture ipmb  ·  3Komentar

konstin picture konstin  ·  3Komentar

bgjelstrup picture bgjelstrup  ·  3Komentar