Docker Alpine Python
-> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/DockerfilePython 3.6.3
pipenv, version 8.3.1
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`
pipenv install --system
sollte die Installation nicht fehlschlagen, dass /bin/python nicht gefunden wird.
pipenv install --system
auf diesem Docker-Image schlägt fehl
@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:
location
ist None
Project.virtualenv_location
ist None
( location
ist immer noch None
)allow_global
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?
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.
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.
Hilfreichster Kommentar
@kennethreitz Problem ist nicht behoben, können Sie Dinge, die noch nicht behoben sind, nicht schließen. Problem ist weiterhin reproduzierbar.