Pipenv: Pipenv löst --system python nicht richtig auf.

Erstellt am 31. Okt. 2017  ·  46Kommentare  ·  Quelle: pypa/pipenv

Beschreibe deine Umgebung
  1. Betriebssystemtyp Docker Alpine Python -> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/Dockerfile
  2. Python-Version: Python 3.6.3
  3. Pipenv-Version: pipenv, version 8.3.1
Erwartetes Ergebnis

Wenn ich PIP_PYTHON_PATH setze, wird es ignoriert und von pipenv überschrieben (meine Frage ist warum, was ist der Grund dafür?), weil https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L367 Es überschreibt dieses ENV Variable, wenn ich das Flag --system . Ich habe dieses Problem festgestellt, weil beim Erstellen meines Docker-Images bei pipenv install --system Fehler aufgetreten ist

Warum ich das weiß? Weil es eine andere Funktion gibt, die falsch funktioniert.
```(Pdb) python_path
'/bin/python'
(Pdb) die('python')
'/bin/python'
(Pdb) print(sys.executable)
'/usr/local/bin/python'

/ # /bin/python
sh: /bin/python: nicht gefunden

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`

Tatsächliche Ergebnis

pipenv install --system sollte die Installation nicht fehlschlagen, dass /bin/python nicht gefunden wird.

Schritte zum Replizieren

pipenv install --system auf diesem Docker-Image schlägt fehl

Hilfreichster Kommentar

@kennethreitz Problem ist nicht behoben, können Sie Dinge, die noch nicht behoben sind, nicht schließen. Problem ist weiterhin reproduzierbar.

Alle 46 Kommentare

@galuszkak das ist interessant. sys.executable wird also gemäß pdb gesetzt, aber wir geben nicht die Tatsache, dass Sie —system wenn wir tatsächlich which() aufrufen, also versucht es, den Speicherort des Projekts virtualenv zu verwenden die es vermutlich nicht gibt. Dies ist der relevante Aufruf, der leicht zu beheben sein sollte, wenn ich ins Büro komme: https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L406

Der Grund, warum wir all dies tun, ist hauptsächlich, um den pip-fools-Paketresolver dazu zu bringen, Python-Pakete für Python-Versionen aufzulösen, die sich vom aktiven Interpreter unterscheiden

Mit diesem Dockerifle, das auf dem für dieses Repository festgelegten basiert, kann ich dieses Problem nicht reproduzieren, ohne zu sagen, dass es nicht existiert, es sieht so aus, als ob etwas im Gange ist, dieses Dockerfile kaufen scheint zu funktionieren:

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 Ich habe --deploy Flag nicht verwendet + Sie verwenden nicht $PIP_PYTHON_PATH, das hier das ursprüngliche Problem ist, das von pipenv überschrieben wird.

@galuszkak Entschuldigung; Ich verstehe das, ich denke, ich bin mir nicht sicher, warum dies in diesem Fall festgelegt werden muss. Wir sollten diesen Fehler auf jeden Fall beheben und beheben. Ich frage mich nur, ob mit Docker Alpine mehr los ist, für das der PIP_PYTHON_PATH festgelegt werden musste.

@erinxocon nichts zu entschuldigen :), danke, dass du dir mein Problem angeschaut hast 👍 . Der Fix, den ich in Nr. 1005 bereitstelle, funktioniert jetzt für mich.

Aber ich habe Ihr Bild ausprobiert und es funktioniert perfekt mit den gleichen Dingen. Ich versuche, herauszufinden, was mein Problem in erster Linie verursacht, weil sam Pipfile und Pipfile.lock und die gleichen .env-Datei-Sounds auf Ihrem Dockerfile funktionieren, und ich sehe keinen Unterschied, weil ich dasselbe Bild beziehe ...

Verstanden @erinxocon ! So können Sie das reproduzieren:

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

Pipfile:

[[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'

Scheint ein Problem mit der Verwendung von ONBUILD RUN im Vergleich zu nur RUN zu sein. Da ich kein Docker-Experte bin, muss ich herausfinden, was der Unterschied zwischen ihnen ist.

@erinxocon Ich glaube nicht, dass das das Problem ist. Im obigen Beispiel zeige ich Ihnen das Problem innerhalb des laufenden Containers, nicht in einem Schrittbild.

@erinxocon das Problem besteht darin, die Variable überhaupt zu setzen (die eigentlich nicht gesetzt werden muss, aber das ist nebensächlich) - durch das Setzen von PIP_PYTHON_PATH wird die Resolver-Funktionalität unterbrochen, wenn Sie --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

Da @galuszkak --system aber allow_global nicht von der Kopie von which durchgereicht wird, die an den Resolver übergeben wird, aber es gibt auch kein Project.virtualenv_location Aufgrund des --system Flags haben wir gleichzeitig:

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

So landen wir bei /bin/python als Befehlsversuch.

@galuszkak Entschuldigung Ich habe das Flag -it sh in Ihrem Beispiel nicht gesehen.

@techalchemie macht Sinn. Hast du einen Patch in Arbeit oder soll ich den übernehmen?

@erinxocon @galuszkak hat bereits einen Patch (#1005) geschrieben, bei dem @nateprewitt einige Bedenken

@erinxocon wieder, nichts zu entschuldigen und wirklich

Können wir Nr. 1005 als Lösung zustimmen/nicht zustimmen? Ich werde versuchen, die Diskussion über diesen PR weiter zu bewegen.

Dieses Problem hat mich heute wieder getroffen, aber unter OS X unter völlig anderen Bedingungen. Stack-Trace unten.

➜  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'

Meine Shell war ZSH. Nach dem Setzen von LC_ALL und LANG in .zshrc funktioniert alles einwandfrei. Aber ich bin mir nicht sicher, warum LANG/LC_ALL einen Einfluss auf die Wahl des Python-Interpreters haben sollte.

@galuszkak Es ist speziell ein Problem auf dem Mac aufgrund von Gebietsschemaproblemen. Ich werde versuchen, mich morgen daran zu erinnern, ein frühes Problem in diesem Projekt aufzuspüren, bei dem Kenneth das Problem mit der Standard-Shell-Konfiguration besprochen hat, aber im Grunde, wenn Ihr Gebietsschema nicht richtig eingestellt ist Python stirbt fürchterlich

Was die PR betrifft, denke ich, dass wir Nate zum Abmelden brauchten, lass mich ihn in der PR anpingen

Übergeben Sie system an die Funktion, an die which wird, und übergeben Sie es an das übergebene which .

@kennethreitz Problem ist nicht behoben, können Sie Dinge, die noch nicht behoben sind, nicht schließen. Problem ist weiterhin reproduzierbar.

keine Bewegung in 30 Tagen. es kommt wieder wenn es wichtig ist

Ich bin mit diesem Problem auf Alpenbildern. Irgendeine Lösungsmöglichkeit?

  • Python 3.6.2
  • pipenv, Version 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'

Dies wird von #1097 behoben, wenn und wenn es zusammengeführt wird

Das @kennethreitz- Problem hat jetzt 23 Tage und nicht mehr 30 Tage, also hast du es zu schnell geschlossen. Auch gibt es ausstehende PR, nachdem die erste geschlossen wurde. Es gibt also noch ausstehende Maßnahmen zu diesem Thema...

Bitte öffnen Sie das Problem erneut.

Ich kann dies in der neuesten Version (9.0.1) reproduzieren, bitte erneut öffnen.

@jacebrowning danke für den Bericht, aber das wurde in 9.0.1 nicht behoben, #1005 wurde erst nach der Veröffentlichung von 9.0.1 zusammengeführt. Versuchen Sie es mit Master und sehen Sie, ob es behoben ist

Ich habe es gerade versucht, pip install git+git://github.com/pypa/pipenv.git@master und pipenv install --dev --system angefangen, in meinem python:3.6.3 Docker-Image zu arbeiten. Kann eine weitere Freigabe erfolgen?

Ich kann das Problem im Master reproduzieren. Obwohl es geschlossen ist, wurde der PR #1097, der dieses Problem lösen sollte, nicht in den Master eingebunden. Bitte wieder öffnen

Hallo, ich habe dieses Problem erst heute gefunden. Gibt es eine andere Möglichkeit, Pipenv in einem alpinen Container zu verwenden?

@LuRsT Ich installiere einfach über das git commit sha, das den Fix hat.

Warte gerade auf eine neue Version.

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

BEARBEITEN: Sie müssen git installieren, damit dies funktioniert.

Cool, danke @sbdchd!

Leider stoße ich immer noch in den Containern python:3.6.3 und ubuntu:17.10 , mit allen hier erwähnten Versionen von pipenv, einschließlich der von @sbdchd vorgeschlagenen .

Edit: Sorry, das war ein wenig hilfreich. Ich konnte es nicht mit einem minimaleren Dockerfile neu erstellen, also muss es etwas Bestimmtes (und wahrscheinlich Dummes) sein, das ich mache. Ich melde mich wenn ich es finde!

Hier ist das Dockerfile, das ich für dev verwende:

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"]

Dank dafür. Wie sich herausstellte, trat der Fehler in meinem Fall beim Versuch auf, eine Sperrdatei zu erstellen. Ich übertrage im Moment einige Projekte von requirements.txt 's und installiere diese in einem Container, während ich herumbastelte. Da dies wahrscheinlich kein empfohlener Anwendungsfall ist, lohnt es sich wahrscheinlich nicht, sich zu viele Sorgen zu machen?

Ich habe in # 917 einen Workaround hinzugefügt, der in Docker ziemlich einfach zu verwenden ist. Der Kommentar lautet https://github.com/pypa/pipenv/issues/917#issuecomment -375312947. Obwohl es nicht ideal ist, denke ich, dass es ziemlich einfach ist. @mcgeeco; Mein Szenario war ähnlich wie Ihres, weil Sie dies wollten. Vielleicht finden Sie meine Problemumgehung also nützlich?

Hi!

Habe hier gerade das gleiche Problem mit dem python:3.6 Docker-Image und pipenv-11.9.0 .

Hier ist ein Dockerfile-Beispiel:

FROM python:3.6

WORKDIR /app
COPY . /app/

RUN pip install pipenv
RUN pipenv install --system

EXPOSE 8000

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

Im Moment verwende ich den @Jitsusama .

Vielen Dank.

Das gleiche hier, immer noch davon betroffen.

Entschuldigung für die anhaltenden Probleme hier, Leute, wir hatten einige Probleme mit unserer Testinfrastruktur, aber wir werden uns das ansehen

Hallo, ich verwende die neueste Version der Bibliothek 11.10.0 und sehe dieses Problem immer noch. Das Basis-Image ist 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 Entschuldigung für die Frustration, wie ein paar Leute an verschiedenen Stellen erwähnt haben (ich weiß, dass es jetzt viel zu berichten gibt), ist der entscheidende Punkt, dass Sie nicht nur RUN cd sondern das Sie verwenden tatsächlich WORKDIR /somedirectory weil (derzeit Refactoring im Gange) die Pfadfindung (und als Ergebnis das Finden von Python) etwas fehlerhaft ist, wenn Sie versuchen, dies von / aus zu tun

@techalchemy das kann ich leider nicht bestätigen. Mein minimales Dockerfile:

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

und der fehler:

+ 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

das ist das gleiche wie in #1939.

Dies sind die installierten Versionen:

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

Wenn ich stattdessen die Python-Binärdatei sym-linke, ist alles in Ordnung.

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

@Midnighter kopierst du tatsächlich eine Pipfile?

Jawohl

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

[packages]
Flask = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.6"

Stimme @Midnighter zu. Trotzdem wird der gleiche Fehler wie oben angezeigt.

@Midnighter, du kannst dein WORKDIR auf app/ und dann auf COPY Pipfile* app/ – dies bewegt dich in /app und kopiert dann deine Pipfile in /app/app was bedeutet, dass pipenv kein Pipfile zum Arbeiten findet. Ich habe es einfach gemacht und es hat funktioniert:

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

Welche Docker-Version hast du? Sie haben Recht, ich habe einen Fehler bei der Vereinfachung des Dockerfiles gemacht, aber weder die Version, die Sie hier gepostet haben, noch eine andere Version hat für mich funktioniert.

Ich bin auf Docker version 17.09.0-ce, build afdb6d4 . Wenn ich dein Dockerfile oben versuche, erhalte ich:

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

Wenn ich es so verwende, wie ich es ursprünglich beabsichtigt habe.

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

Ich bekomme den gleichen Fehler.

  • Stellen Sie sicher, dass Sie eine Sperrdatei kopieren
  • Ich habe genau die Docker-Datei ausgeführt, die ich eingefügt habe

Warum ist eine Sperrdatei erforderlich, um die ausführbare Python-Datei zu finden? Zumal ich dort nicht einmal das Flag --deploy verwende. Sie haben jedoch Recht, dass es mit einer vorhandenen Sperrdatei funktioniert.

@Midnighter, weil pipenv eine Abhängigkeitsauflösung durchführen muss, was bedeutet, dass es gesperrt werden musste, es sei denn, es hat eine Sperrdatei. Aber wenn Sie —system , kann es keine Abhängigkeitsauflösung durchführen - dies erfordert eine isolierte Umgebung und —system sagt im Grunde "keine virtuelle Umgebung erstellen", was wir für die Isolierung verwenden würden. Die Nachrichten sind nicht großartig, aber ich habe einige Änderungen dafür vor.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen