Pipenv: Pipenv no resuelve correctamente el sistema Python.

Creado en 31 oct. 2017  ·  46Comentarios  ·  Fuente: pypa/pipenv

Describe tu entorno
  1. Tipo de SO Docker Alpine Python -> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/Dockerfile
  2. Versión de Python: Python 3.6.3
  3. Versión de Pipenv: pipenv, version 8.3.1
Resultado Esperado

Si configuro PIP_PYTHON_PATH, pipenv lo ignora y lo anula (mi pregunta es por qué, ¿cuál es el razonamiento detrás de eso?) Porque https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L367 está anulando este ENV variable cuando uso la bandera --system . He detectado ese problema porque al crear mi imagen de la ventana acoplable fallaba en pipenv install --system

¿Por qué sé esto? Porque hay otra función que funciona incorrectamente.
`` `(Pdb) python_path
'/ bin / python'
(Pdb) que ('python')
'/ bin / python'
(Pdb) imprimir (sys.executable)
'/ usr / local / bin / python'

/ # / bin / python
sh: / bin / python: no encontrado

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`

Resultado actual

pipenv install --system debe instalar no falló que / bin / python no se encuentra.

Pasos para replicar

pipenv install --system en esa imagen de la ventana acoplable fallará

Comentario más útil

El problema de

Todos 46 comentarios

@galuszkak esto es interesante. Entonces sys.executable se establece de acuerdo con pdb, pero no estamos pasando el hecho de que usó —system cuando en realidad llamamos which() , por lo que está tratando de usar la ubicación del proyecto virtualenv que presumiblemente no existe. Esta es la invocación relevante que debería ser bastante fácil de solucionar cuando entre en la oficina: https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L406

En cuanto a por qué estamos haciendo todo esto, es principalmente para que podamos engañar al solucionador de paquetes pip-fools para que resuelva paquetes de Python para versiones de Python que son diferentes del intérprete activo.

Usando este Dockerifle, que se basa en el comprometido con este repositorio, no puedo reproducir este problema, sin decir que no existe, parece que algo está pasando, comprar este dockerfile parece funcionar:

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 No

@galuszkak Disculpas; Entiendo eso, supongo que no estoy seguro de por qué es necesario configurar esto en este caso. Definitivamente deberíamos abordar este error y solucionarlo. Me pregunto si hay más cosas que hacer con Docker Alpine que requieran que se establezca PIP_PYTHON_PATH.

@erinxocon nada para disculparse :), gracias por atender mi problema 👍. La solución que proporciono en el n. ° 1005 me está funcionando en este momento.

Pero probé tu imagen y funciona perfectamente bien con el mismo conjunto de cosas. Tratando de precisar qué está causando mi problema en primer lugar, porque sam Pipfile y Pipfile.lock y los mismos sonidos de archivo .env funcionan en su Dockerfile, y no veo una diferencia porque obtengo la misma imagen ...

¡ Entendido @erinxocon ! Así es como se puede reproducir eso:

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'

Parece ser un problema con el uso de ONBUILD RUN en lugar de simplemente RUN. Al no ser un experto en Docker, tendré que averiguar cuál es la diferencia entre ellos.

@erinxocon No creo que ese sea el problema. En el ejemplo anterior, le muestro el problema dentro del contenedor en ejecución, no en ninguna imagen de construcción de pasos.

@erinxocon, el problema es configurar la variable en primer lugar (que en realidad no necesita ser configurada, pero eso no viene al caso) - al configurar PIP_PYTHON_PATH rompe la funcionalidad de resolución cuando necesitas pasar --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

Dado que @galuszkak está usando --system pero allow_global no pasa por la copia de which que se pasa al solucionador, pero tampoco hay Project.virtualenv_location debido a la bandera --system , terminamos teniendo simultáneamente:

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

Así es como terminamos con /bin/python como intento de comando.

@galuszkak Disculpas No vi la bandera -it sh pasada en tu ejemplo.

@techalchemy tiene sentido. ¿Tiene un parche en proceso, o debería ponérmelo?

@erinxocon @galuszkak ya escribió un parche (# 1005) sobre el cual @nateprewitt había expresado algunas preocupaciones, pero no estoy seguro de dónde lo deja.

@erinxocon de nuevo, nada que disculparme y realmente gracias por investigar mi problema.

¿Podemos estar de acuerdo / en desacuerdo con el # 1005 como solución? Intentaré avanzar más en la discusión sobre ese RP.

Este problema me golpeó nuevamente hoy, pero en OS X en condiciones totalmente diferentes. Seguimiento de la pila a continuación.

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

Mi caparazón era ZSH. Después de configurar LC_ALL y LANG en .zshrc, todo funciona bien. Pero no estoy seguro de por qué LANG / LC_ALL debería tener algún impacto en la elección del intérprete de Python.

@galuszkak es específicamente un problema en Mac debido a problemas de configuración regional, intentaré recordar mañana para rastrear un problema temprano en este proyecto donde Kenneth discutió el problema con la configuración de shell predeterminada, pero básicamente si su configuración regional no está configurada correctamente pitón muere horriblemente

En cuanto al PR, creo que necesitábamos que Nate se despidiera, déjame enviarle un ping en el PR.

Pase system a la función, donde se está pasando which , y páselo al which pasado.

El problema de

ningún movimiento en 30 días. volverá a aparecer si es importante

Estoy con este problema con las imágenes alpinas. ¿Alguna solución?

  • Python 3.6.2
  • pipenv, versión 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'

Esto será resuelto por # 1097 si y cuando se fusiona

El número de

Vuelve a abrir el problema.

Puedo reproducir esto en la última versión (9.0.1), vuelva a abrir.

@jacebrowning gracias por el informe, pero esto no se solucionó en 9.0.1, # 1005 no se fusionó hasta después del lanzamiento de 9.0.1. Intente con el maestro y vea si se resuelve

Acabo de intentarlo, pip install git+git://github.com/pypa/pipenv.git@master y pipenv install --dev --system comenzaron a trabajar en mi imagen de la ventana acoplable python:3.6.3 . ¿Se puede hacer otro lanzamiento?

Puedo reproducir el problema en master. Aunque está cerrado, el PR # 1097 que supuestamente resolvería este problema en realidad no se fusionó con el maestro. Por favor reabrir

Hola, acabo de encontrar este problema hoy, ¿hay otra forma de usar Pipenv en un contenedor alpino?

@LuRsT Acabo de instalar a través de git commit sha, que tiene la solución.

Actualmente esperando un nuevo lanzamiento.

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

EDITAR: necesitará instalar git para que esto funcione.

¡Genial, gracias @sbdchd!

Desafortunadamente, todavía me encuentro con esto en los contenedores python:3.6.3 y ubuntu:17.10 , con todas las versiones de pipenv mencionadas aquí, incluida la sugerida por @sbdchd .

Editar: Lo siento, eso fue un poco inútil. No pude recrearlo con un Dockerfile más mínimo, por lo que debe ser algo específico (y probablemente estúpido) que estoy haciendo. ¡Informaré si lo encuentro!

Aquí está el Dockerfile que estoy usando para el desarrollo:

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

Gracias por eso. Como resultado, el error en mi caso estaba ocurriendo al intentar crear un archivo de bloqueo. Estoy haciendo la transición de algunos proyectos de requirements.txt en este momento, así que estaba instalando desde eso en un contenedor mientras retocaba. Dado que este probablemente no es un caso de uso recomendado, ¿probablemente no vale la pena preocuparse demasiado?

He agregado una solución alternativa que es bastante simple de usar en Docker en el n. ° 917. El comentario es https://github.com/pypa/pipenv/issues/917#issuecomment -375312947. Si bien no es ideal, creo que es bastante simple. @mcgeeco; mi escenario era similar al tuyo por querer esto, así que tal vez encuentres útil mi solución alternativa.

¡Hola!

Acabo de tener el mismo problema aquí con la imagen de Docker python:3.6 y pipenv-11.9.0 .

Aquí hay una muestra de Dockerfile:

FROM python:3.6

WORKDIR /app
COPY . /app/

RUN pip install pipenv
RUN pipenv install --system

EXPOSE 8000

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

Por ahora, estoy usando la solución alternativa de @Jitsusama .

Gracias.

Lo mismo aquí, todavía siendo golpeado por esto.

Disculpe los problemas actuales, amigos, tuvimos algunos problemas con nuestra infraestructura de prueba, pero lo revisaremos.

Hola, estoy usando la última versión de la biblioteca 11.10.0 y sigo viendo este problema. La imagen base es 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 perdón por la frustración, como algunas personas mencionaron en varios lugares (sé que hay mucho que cubrir en este momento), la pieza crítica es asegurarse de que no solo use RUN cd sino que en realidad usas WORKDIR /somedirectory porque (actualmente, la refactorización está en marcha) la búsqueda de rutas (y, como resultado, la búsqueda de Python) tiene algunos errores cuando intentas hacerlo desde /

@techalchemy , lamentablemente, no puedo confirmarlo. Mi Dockerfile mínimo:

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

y el error:

+ 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

que es el mismo que en # 1939.

Estas son las versiones instaladas:

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

Si, en cambio, hago un enlace simbólico con el binario de Python, todo está bien.

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

@Midnighter , ¿realmente estás copiando un archivo pip?

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

[packages]
Flask = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.6"

De acuerdo con @Midnighter. Aún así, vea el mismo error que el anterior.

@Midnighter no puede establecer su WORKDIR en app/ y luego COPY Pipfile* app/ - esto lo mueve a /app y luego copia su Pipfile en /app/app que significa que pipenv no encuentra un Pipfile con el que trabajar. Simplemente hice esto y funcionó:

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

¿En qué versión de Docker estás? Tiene razón, cometí un error al simplificar el Dockerfile, pero ni la versión que publicó aquí ni otra versión funcionó para mí.

Estoy en Docker version 17.09.0-ce, build afdb6d4 . Cuando pruebo su Dockerfile arriba, obtengo:

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

Cuando lo uso como pretendía originalmente.

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

Me sale el mismo error.

  • asegúrese de que está copiando un archivo de bloqueo
  • Ejecuté el archivo Docker exacto que pegué

¿Por qué es un archivo de bloqueo un requisito para encontrar el ejecutable de Python? Especialmente porque ni siquiera estoy usando la bandera --deploy allí. Sin embargo, tiene razón en que funciona con un archivo de bloqueo existente.

@Midnighter porque pipenv tiene que hacer una resolución de dependencia, lo que significa que tuvo que bloquear a menos que tenga un archivo de bloqueo. Pero, si pasa —system no puede hacer una resolución de dependencia; esto requiere un entorno aislado y —system básicamente dice 'no haga un virtualenv', que es lo que usaríamos para el aislamiento. La mensajería no es excelente, pero tengo algunos cambios para esto.

¿Fue útil esta página
0 / 5 - 0 calificaciones