Pipenv: Pipenv tidak menyelesaikan --system python dengan benar.

Dibuat pada 31 Okt 2017  ·  46Komentar  ·  Sumber: pypa/pipenv

Deskripsikan lingkunganmu
  1. Jenis OS Docker Alpine Python -> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/Dockerfile
  2. Versi Python: Python 3.6.3
  3. Versi Pipenv: pipenv, version 8.3.1
Hasil yang diharapkan

Jika saya mengatur PIP_PYTHON_PATH itu diabaikan dan ditimpa oleh pipenv (pertanyaan saya adalah mengapa, apa alasan di balik itu?) karena https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L367 Ini menimpa ENV ini variabel ketika saya menggunakan flag --system . Saya telah menangkap masalah itu karena ketika membuat gambar buruh pelabuhan saya gagal pada pipenv install --system

Mengapa saya tahu ini? Karena ada fungsi lain yang tidak berfungsi dengan benar.
```(Pdb) python_path
'/bin/python'
(Pdb) yang('python')
'/bin/python'
(Pdb) cetak (sys.executable)
'/usr/local/bin/python'

/ # /bin/python
sh: /bin/python: tidak ditemukan

I think issue is somewhere here: https://github.com/kennethreitz/pipenv/blob/1bf6f5101a3bf1dca78be814e742411cc5bdb2dd/pipenv/cli.py#L1440
        p = os.sep.join([location] + ['bin/{0}'.format(command)])

`` this should return /usr/local/bin/python but for some strange reason it's returning /bin/python`

Hasil sebenarnya

pipenv install --system harus menginstal tidak gagal /bin/python tidak ditemukan.

Langkah-langkah untuk meniru

pipenv install --system pada gambar buruh pelabuhan itu akan gagal

Komentar yang paling membantu

Masalah @kennethreitz belum teratasi, bisakah Anda tidak menutup hal-hal yang belum diperbaiki. Masalah masih dapat direproduksi.

Semua 46 komentar

@galuszkak ini menarik. Jadi sys.executable diatur menurut pdb, tetapi kami tidak melewatkan fakta bahwa Anda menggunakan —system ketika kami benar-benar memanggil which() , jadi ia mencoba menggunakan lokasi proyek virtualenv yang diduga tidak ada. Ini adalah doa yang relevan yang seharusnya cukup mudah untuk diperbaiki ketika saya masuk ke kantor: https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L406

Adapun mengapa kami melakukan semua ini, terutama agar kami dapat mengelabui penyelesai paket pip-fools untuk menyelesaikan paket python untuk versi python yang berbeda dari penerjemah aktif

Menggunakan Dockerifle ini, yang didasarkan pada yang berkomitmen pada repo ini, saya tidak dapat mereproduksi masalah ini, tidak mengatakan itu tidak ada, sepertinya ada sesuatu yang terjadi, beli dockerfile ini sepertinya berfungsi:

FROM python:alpine3.6

# -- Install Pipenv:
RUN set -ex && pip install pipenv --upgrade

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app

# -- Adding Pipfiles
ONBUILD COPY Pipfile Pipfile
ONBUILD COPY Pipfile.lock Pipfile.lock

# -- Install dependencies:
ONBUILD RUN set -ex && pipenv install --deploy --system

@erinxocon Saya tidak menggunakan --deploy flag + Anda tidak menggunakan $PIP_PYTHON_PATH yang merupakan masalah asli di sini yang ditimpa oleh pipenv.

@galuszkak Mohon maaf; Saya mengerti itu, saya kira saya tidak yakin mengapa ini perlu diatur dalam kasus ini. Kami pasti harus mengatasi bug ini dan memperbaikinya. Saya hanya ingin tahu apakah ada lagi yang terjadi dengan docker alpine yang mengharuskan PIP_PYTHON_PATH disetel.

@erinxocon tidak perlu meminta maaf :), terima kasih telah melihat masalah saya 👍 . Perbaikan yang saya berikan di # 1005 berfungsi untuk saya sekarang.

Tapi saya mencoba gambar Anda dan itu berfungsi dengan baik dengan rangkaian hal yang sama. Mencoba mencari tahu apa yang menyebabkan masalah saya, karena sam Pipfile dan Pipfile.lock dan suara file .env yang sama berfungsi di Dockerfile Anda, dan saya tidak melihat perbedaan karena saya sumber gambar yang sama ...

Mengerti @erinxocon ! Inilah cara Anda mereproduksi itu:

FROM python:3.6-alpine3.6

RUN set -ex && pip install pipenv --upgrade
RUN set -ex && mkdir /app
ENV PIP_PYTHON_PATH=/usr/local/bin/python
COPY Pipfile /app/Pipfile

WORKDIR /app

File Pip:

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
flask = "*"
"flask-restful" = "*"

[dev-packages]
pytest = "*"
"pytest-flask" = "*"

[requires]
python_version = "3.6"
$ docker build . -t 'pipenv_issue:latest' --no-cache
$ docker run -it pipenv_issue:latest sh
/app # pipenv install --system
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  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 1855, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1320, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1050, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 459, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 296, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 639, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

Tampaknya menjadi masalah dengan menggunakan ONBUILD RUN vs RUN saja. Tidak menjadi ahli buruh pelabuhan, saya harus mencari tahu apa perbedaan di antara mereka.

@erinxocon Saya tidak berpikir itu masalahnya. Dalam contoh di atas, saya menunjukkan kepada Anda masalah di dalam menjalankan wadah bukan pada setiap langkah membangun gambar.

@erinxocon masalahnya adalah dengan mengatur variabel di tempat pertama (yang sebenarnya tidak perlu diatur tetapi itu tidak penting) - dengan mengatur PIP_PYTHON_PATH itu merusak fungsionalitas resolver ketika Anda harus melewati --system :

def which(command, location=None, allow_global=False):
    if location is None:
        location = project.virtualenv_location

    if not allow_global:
        if os.name == 'nt':
            p = find_windows_executable(os.path.join(location, 'Scripts'), command)
        else:
            p = os.sep.join([location] + ['bin/{0}'.format(command)])
    else:
        if command == 'python':
            p = sys.executable

return p

Karena @galuszkak menggunakan --system tetapi allow_global tidak dilewati oleh salinan which yang diteruskan ke resolver, tetapi juga tidak ada Project.virtualenv_location karena flag --system , kami akhirnya memiliki secara bersamaan:

  1. location adalah None
  2. Project.virtualenv_location adalah None ( location masih None )
  3. _tidak_ allow_global
  4. p = os.sep.join([None] + ['bin/{0}'.format(python)])

Begitulah cara kami menghasilkan /bin/python sebagai upaya perintah.

@galuszkak Permintaan maaf saya tidak melihat flag -it sh dilewatkan dalam contoh Anda.

@techalchemy masuk akal. Apakah Anda memiliki tambalan dalam pekerjaan, atau haruskah saya memakainya?

@erinxocon @galuszkak sudah menulis tambalan (#1005) yang dikhawatirkan oleh

@erinxocon lagi, tidak ada permintaan maaf dan terima kasih telah

Bisakah kita setuju/tidak setuju pada #1005 sebagai perbaikan? Saya akan mencoba memindahkan diskusi lebih lanjut tentang PR itu.

Masalah ini menimpa saya lagi hari ini, tetapi pada OS X dalam kondisi yang sama sekali berbeda. Jejak tumpukan di bawah.

➜  saudi git:(dev) ✗ pipenv install -r requirements.txt
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project…
⠋Traceback (most recent call last):
  File "/usr/local/bin/pew", line 7, in <module>
    from pew.pew import pew
  File "/usr/local/lib/python3.6/site-packages/pew/__init__.py", line 11, in <module>
    from . import pew
  File "/usr/local/lib/python3.6/site-packages/pew/pew.py", line 42, in <module>
    from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
  File "/usr/local/lib/python3.6/site-packages/pew/_utils.py", line 22, in <module>
    encoding = locale.getlocale()[1] or 'ascii'
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 581, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 490, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Virtualenv location:
Requirements.txt found, instead of Pipfile! Converting…
Warning: Your Pipfile now contains pinned versions, if your requirements.txt did.
We recommend updating your Pipfile to specify the "*" version, instead.
Requirements file provided! Importing into Pipfile…
Creating a virtualenv for this project…
⠋Traceback (most recent call last):
  File "/usr/local/bin/pew", line 7, in <module>
    from pew.pew import pew
  File "/usr/local/lib/python3.6/site-packages/pew/__init__.py", line 11, in <module>
    from . import pew
  File "/usr/local/lib/python3.6/site-packages/pew/pew.py", line 42, in <module>
    from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
  File "/usr/local/lib/python3.6/site-packages/pew/_utils.py", line 22, in <module>
    encoding = locale.getlocale()[1] or 'ascii'
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 581, in getlocale
    return _parse_localename(localename)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/locale.py", line 490, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Virtualenv location:
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  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 1866, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1330, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1121, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 461, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 274, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 523, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

Cangkang saya adalah ZSH. Setelah mengatur LC_ALL dan LANG di .zshrc semuanya berfungsi dengan baik. Tapi saya tidak yakin mengapa LANG/LC_ALL harus berdampak pada pemilihan juru bahasa python.

@galuszkak ini secara khusus merupakan masalah pada Mac karena masalah lokal, saya akan mencoba mengingat besok untuk melacak masalah awal dalam proyek ini di mana Kenneth membahas masalah dengan konfigurasi shell default tetapi pada dasarnya jika lokal Anda tidak disetel dengan benar python mati mengenaskan

Adapun PR saya pikir kami perlu nate untuk menandatangani, biarkan saya ping dia di PR

Lewati system ke fungsi, di mana which diteruskan, dan diteruskan ke which .

Masalah @kennethreitz belum teratasi, bisakah Anda tidak menutup hal-hal yang belum diperbaiki. Masalah masih dapat direproduksi.

tidak ada gerakan dalam 30 hari. itu akan muncul kembali jika itu penting

Saya dengan masalah ini pada gambar alpine. Ada solusi?

  • Python 3.6.2
  • pipenv, versi 8.2.6
Step 7/7 : RUN pipenv install --dev --system --verbose
 ---> Running in a3097251c098
Pipfile.lock (1b4750) out of date, updating to (6a9e01)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
CRITICAL:pip.utils:Error [Errno 2] No such file or directory: '/bin/python': '/bin/python' while executing command python setup.py egg_info
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  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 1866, in install
    do_init(dev=dev, allow_global=system, ignore_pipfile=ignore_pipfile, system=system, skip_lock=skip_lock, verbose=verbose, concurrent=concurrent, deploy=deploy, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1325, in do_init
    do_lock(system=system, pre=pre)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1121, in do_lock
    pre=pre
  File "/usr/local/lib/python3.6/site-packages/pipenv/utils.py", line 461, in resolve_deps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 296, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 153, in get_dependencies
    result = reqset._prepare_file(self.finder, ireq)
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 639, in _prepare_file
    abstract_dist.prep_for_dist()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 134, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/req/req_install.py", line 438, in run_egg_info
    command_desc='python setup.py egg_info')
  File "/usr/local/lib/python3.6/site-packages/pipenv/patched/pip/utils/__init__.py", line 667, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/local/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/python': '/bin/python'

Ini akan diselesaikan dengan #1097 jika dan ketika digabungkan

Masalah @kennethreitz memiliki 23 hari sekarang bukan 30 hari, jadi Anda menutupnya terlalu cepat. Juga ada PR yang tertunda setelah yang pertama ditutup. Jadi masih ada tindakan yang tertunda tentang masalah ini ...

Silakan buka kembali masalah.

Saya dapat mereproduksi ini dalam rilis terbaru (9.0.1), silakan buka kembali.

@jacebrowning terima kasih atas laporannya tetapi ini tidak diperbaiki di 9.0.1, #1005 tidak digabung sampai setelah 9.0.1 dirilis. Coba dengan master dan lihat apakah itu teratasi

Saya baru saja mencoba, pip install git+git://github.com/pypa/pipenv.git@master dan pipenv install --dev --system mulai bekerja di gambar buruh pelabuhan python:3.6.3 . Bisakah rilis lain dibuat?

Saya dapat mengulangi masalah di master. Meskipun ditutup, PR #1097 yang seharusnya menyelesaikan masalah ini tidak benar-benar digabung menjadi master. Silahkan buka kembali

Hai, saya baru saja menemukan masalah ini hari ini, apakah ada cara lain untuk menggunakan Pipenv dalam wadah alpine?

@LuRsT Saya baru saja menginstal melalui git commit sha, yang telah diperbaiki.

Saat ini menunggu rilis baru.

RUN set -ex && pip install git+git://github.com/pypa/pipenv.git<strong i="8">@8378a1b104f2d817790a05da370bef0a1b00f452</strong>

EDIT: Anda harus menginstal git agar ini berfungsi.

Keren, terima kasih @sbdchd!

Sayangnya saya masih mengalami ini dalam wadah python:3.6.3 dan ubuntu:17.10 , dengan semua versi pipenv disebutkan di sini, termasuk yang disarankan oleh @sbdchd .

Sunting: Maaf itu sedikit tidak membantu. Saya tidak dapat membuatnya kembali dengan Dockerfile yang lebih minimal, jadi itu pasti sesuatu yang spesifik (dan mungkin bodoh) yang saya lakukan. Saya akan melaporkan kembali jika saya menemukannya!

Ini Dockerfile yang saya gunakan untuk dev:

FROM python:3.6
ENV PYTHONUNBUFFERD 1

RUN apt-get update
RUN apt-get install netcat -y

# -- Install Pipenv:
RUN set -ex && pip install git+git://github.com/pypa/pipenv.git<strong i="6">@8378a1b104f2d817790a05da370bef0a1b00f452</strong>

# -- Install Application into container:
RUN set -ex && mkdir /app

WORKDIR /app

# -- Adding Pipfiles
COPY Pipfile Pipfile
COPY Pipfile.lock Pipfile.lock

# -- Install dependencies:
RUN set -ex && pipenv install --dev --system

WORKDIR /app

VOLUME ["/app"]

Terima kasih untuk itu. Ternyata, kesalahan dalam kasus saya terjadi ketika mencoba membuat file kunci. Sedang mentransisikan beberapa proyek dari requirements.txt saat ini, jadi saya menginstal dari itu dalam wadah sambil bermain-main. Mengingat bahwa ini mungkin bukan kasus penggunaan yang disarankan, mungkin tidak perlu terlalu dikhawatirkan?

Saya telah menambahkan solusi yang cukup mudah digunakan di Docker di #917. Komentarnya adalah https://github.com/pypa/pipenv/issues/917#issuecomment -375312947. Meskipun tidak ideal, saya pikir itu cukup sederhana. @mcgeeco; skenario saya mirip dengan Anda karena menginginkan ini, jadi mungkin Anda akan menemukan solusi saya berguna?

Hai, yang di sana!

Baru saja mendapat masalah yang sama di sini dengan gambar Docker python:3.6 dan pipenv-11.9.0 .

Berikut ini contoh Dockerfile:

FROM python:3.6

WORKDIR /app
COPY . /app/

RUN pip install pipenv
RUN pipenv install --system

EXPOSE 8000

CMD ["python", "main.py"]

Untuk saat ini, saya menggunakan solusi @Jitsusama .

Terima kasih.

Sama di sini, masih terkena ini.

Maaf atas masalah yang sedang berlangsung di sini, kami memiliki beberapa masalah dengan infrastruktur pengujian kami, tetapi kami akan memeriksanya

Hai, saya menggunakan versi terbaru dari perpustakaan 11.10.0 dan masih melihat masalah ini. Gambar dasarnya adalah ubuntu:xenial.

Step 12/22 : COPY Pipfile /tmp/
 ---> Using cache
 ---> 416d6b4f86bf
Step 13/22 : COPY Pipfile.lock.master /tmp/Pipefile.lock
 ---> 40a28443be72
Step 14/22 : RUN cd /tmp && pip3.6 install pipenv==11.10.0 
 ---> Running in 883b8a638d52
Collecting pipenv==11.10.0
  Downloading https://XYZ/api/pypi/pypi/packages/e5/fd/740a41c68c38262265d73191fb686f38d26c4ea1ea6080a65b2b626bedc7/pipenv-11.10.0-py3-none-any.whl (5.6MB)
Collecting virtualenv-clone>=0.2.5 (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=36.2.1 in /usr/local/lib/python3.6/site-packages (from pipenv==11.10.0)
Collecting certifi (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/fa/53/0a5562e2b96749e99a3d55d8c7df91c9e4d8c39a9da1f1a49ac9e4f4b39f/certifi-2018.1.18-py2.py3-none-any.whl (151kB)
Requirement already satisfied: pip>=9.0.1 in /usr/local/lib/python3.6/site-packages (from pipenv==11.10.0)
Collecting virtualenv (from pipenv==11.10.0)
  Downloading https://XYZ/api/pypi/pypi/packages/ed/ea/e20b5cbebf45d3096e8138ab74eda139595d827677f38e9dd543e6015bdf/virtualenv-15.2.0-py2.py3-none-any.whl (2.6MB)
Installing collected packages: virtualenv-clone, certifi, virtualenv, pipenv
Successfully installed certifi-2018.1.18 pipenv-11.10.0 virtualenv-15.2.0 virtualenv-clone-0.3.0
 ---> c9e452fdc262
Removing intermediate container 883b8a638d52
Step 15/22 : RUN set -ex  && pipenv install --dev --system
 ---> Running in 8c23d30ef730
+ pipenv install --dev --system
Creating a Pipfile for this project…
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  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 366, in install
    selective_upgrade=selective_upgrade,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1730, in do_install
    skip_requirements=skip_requirements,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 634, in ensure_project
    ensure_pipfile(validate=validate, skip_requirements=skip_requirements)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 288, in ensure_pipfile
    project.create_pipfile(python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 557, in create_pipfile
    config_parser = ConfigOptionParser(name=self.name)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pip9/baseparser.py", line 149, in __init__
    assert self.name
AssertionError
The command '/bin/sh -c set -ex  && pipenv install --dev --system' returned a non-zero code: 1

@Ankitmaroo maaf atas frustrasinya, karena beberapa orang menyebutkan di berbagai tempat (saya tahu ada banyak hal yang harus dibahas sekarang) bagian penting adalah memastikan Anda tidak hanya menggunakan RUN cd tetapi itu anda benar-benar menggunakan WORKDIR /somedirectory karena (saat ini, refactor sedang berlangsung) pencarian jalan (dan sebagai hasilnya menemukan python) agak disadap ketika Anda mencoba melakukannya dari /

@techalchemy sayangnya, saya tidak dapat mengkonfirmasi itu. Dockerfile minimal saya:

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1

WORKDIR app/

COPY Pipfile* app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

dan kesalahan:

+ pipenv install --system --dev
Creating a Pipfile for this project…
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  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 366, in install
    selective_upgrade=selective_upgrade,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 1730, in do_install
    skip_requirements=skip_requirements,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 634, in ensure_project
    ensure_pipfile(validate=validate, skip_requirements=skip_requirements)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 288, in ensure_pipfile
    project.create_pipfile(python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 585, in create_pipfile
    'python_version': python_version(required_python)[: len('2.7')]
TypeError: 'NoneType' object is not subscriptable

yang sama seperti pada #1939.

Ini adalah versi yang diinstal:

Successfully installed certifi-2018.1.18 pipenv-11.10.0 virtualenv-15.2.0 virtualenv-clone-0.3.0

Jika sebaliknya saya sym-link biner python semuanya baik-baik saja.

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && ln -sf /usr/local/bin/python /bin/python \
    && pipenv install --system --dev

@Midnighter apakah Anda benar-benar menyalin pipfile?

Ya

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
Flask = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.6"

Setuju dengan @Midnighter. Tetap saja, lihat kesalahan yang sama seperti di atas.

@Midnighter Anda tidak dapat mengatur WORKDIR ke app/ dan kemudian COPY Pipfile* app/ -- ini memindahkan Anda ke /app dan kemudian menyalin Pipfile ke /app/app yang berarti pipenv tidak menemukan Pipfile untuk digunakan. Saya hanya melakukan ini dan itu berhasil:

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1


COPY Pipfile* app/

WORKDIR app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

Anda menggunakan versi Docker apa? Anda benar, saya membuat kesalahan dalam menyederhanakan Dockerfile tetapi baik versi yang Anda posting di sini maupun versi lain tidak berfungsi untuk saya.

Saya di Docker version 17.09.0-ce, build afdb6d4 . Ketika saya mencoba Dockerfile Anda di atas, saya mendapatkan:

+ pipenv install --system --dev
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
ython: not found

Ketika saya menggunakannya seperti yang saya maksudkan semula.

FROM python:3.6-alpine3.7

ENV PYTHONUNBUFFERED=1

WORKDIR /app

COPY Pipfile* /app/

RUN set -x \
    && pip install --upgrade pip setuptools wheel pipenv \
    && pipenv install --system --dev

Saya mendapatkan kesalahan yang sama.

  • pastikan Anda menyalin file kunci
  • Saya menjalankan file buruh pelabuhan yang tepat yang saya tempel

Mengapa file kunci merupakan persyaratan untuk menemukan Python yang dapat dieksekusi? Terutama karena saya bahkan tidak menggunakan flag --deploy sana. Anda benar, bagaimanapun, itu berfungsi dengan file kunci yang ada.

@Midnighter karena pipenv harus melakukan resolusi ketergantungan yang berarti harus mengunci kecuali memiliki file kunci. Tetapi, jika Anda melewati —system itu tidak dapat melakukan resolusi ketergantungan - ini membutuhkan dan lingkungan yang terisolasi dan —system pada dasarnya mengatakan 'jangan membuat virtualenv' yang akan kita gunakan untuk isolasi. Pesannya tidak bagus tapi saya punya beberapa perubahan untuk ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat