Pipenv: Pipenvは--systempythonを正しく解決したせん。

䜜成日 2017幎10月31日  Â·  46コメント  Â·  ゜ヌス: pypa/pipenv

環境に぀いお説明しおください
  1. OSタむプDocker Alpine Python -> https://github.com/docker-library/python/blob/1d59eb2dd813c64891bf554a8ea01754aba25816/3.6/alpine3.6/Dockerfile
  2. Pythonバヌゞョン Python 3.6.3
  3. Pipenvバヌゞョン pipenv, version 8.3.1
期埅される結果

PIP_PYTHON_PATHを蚭定するず、無芖され、pipenvによっおオヌバヌラむドされたす私の質問は、その背埌にある理由は䜕ですか https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L367このENVをオヌバヌラむドしおいるためです。フラグ--systemを䜿甚するず倉数になりたす。 Dockerむメヌゞをビルドするずきに、 pipenv install --system倱敗しおいたため、この問題を芋぀けたした。

なぜ私はこれを知っおいたすか 正しく動䜜しない他の機胜があるためです。
`` `Pdbpython_path
'/ bin / python'
Pdbwhich 'python'
'/ bin / python'
Pdbprintsys.executable
'/ usr / local / bin / python'

// bin / python
sh/ bin / python芋぀かりたせん

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は、/ bin / pythonが芋぀からないため、むンストヌルに倱敗しないはずです。

耇補する手順

そのDockerむメヌゞのpipenv install --systemは倱敗したす

最も参考になるコメント

@kennethreitzの問題は解決されおいたせんが、ただ修正されおいないものを閉じるこずはできたせん。 問題はただ再珟可胜です。

党おのコメント46件

@galuszkakこれは面癜いです。 したがっお、 sys.executableはpdbに埓っお蚭定されたすが、実際にwhich()呌び出すずきに、 —systemを䜿甚したずいう事実を枡しおいないため、プロゞェクトのvirtualenvの堎所を䜿甚しようずしおいたす。おそらく存圚したせん。 これは関連する呌び出しであり、オフィスに入ったずきに簡単に修正できるはずです https 

これらすべおを実行する理由は、䞻に、pip-foolsパッケヌゞリゟルバヌをだたしお、アクティブなむンタヌプリタヌずは異なるバヌゞョンのpythonのpythonパッケヌゞを解決できるようにするためです。

このリポゞトリにコミットされたものに基づくこのDockerifleを䜿甚するず、この問題を再珟できたせん。存圚しないずは蚀わず、䜕かが起きおいるように芋えたす。このdockerfileを賌入するず機胜するようです。

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䜿甚したせんでした--deployフラグ+ここでの元の問題である$ PIP_PYTHON_PATHを䜿甚しおいたせん。これは、pipenvによっおオヌバヌラむドされたす。

@galuszkakお詫び; この堎合、なぜこれを蚭定する必芁があるのか​​わからないず思いたす。 このバグに確実に察凊しお修正する必芁がありたす。 PIP_PYTHON_PATHを蚭定する必芁のあるdockeralpineでさらに倚くのこずが起こっおいるのではないかず思っおいたす。

@erinxocon謝眪するものは䜕もありたせん:)、私の問題を芋おくれおありがずう👍。 1005で提䟛する修正は、珟圚機胜しおいたす。

しかし、私はあなたの画像を詊したした、そしおそれは同じもののセットで完党にうたく機胜しおいたす。 sam PipfileずPipfile.lockおよび同じ.envファむルのサりンドがDockerfileで機胜し、同じ画像を゜ヌスしおいるため違いが芋られないため、最初に問題の原因を突き止めようずしおいたす...

@erinxoconを手に

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'

ONBUILDRUNを䜿甚する堎合ず単にRUNを䜿甚する堎合の問題のようです。 Dockerの専門家ではないので、䞡者の違いを理解する必芁がありたす。

@erinxoconそれが問題だずは思わない。 䞊蚘の䟋では、ステップ構築むメヌゞではなく、実行䞭のコンテナヌ内で問題が発生しおいるこずを瀺しおいたす。

問題@erinxocon実際に蚭定する必芁がありたすが、それはポむントの暪にいたせん最初の堎所で倉数を蚭定しおいる-蚭定するこずにより、 PIP_PYTHON_PATHあなたが合栌する必芁があるずき、それはリゟルバ機胜を壊し--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

@galuszkakは--systemいたすが、 allow_globalは、リゟルバヌに枡されるwhichのコピヌによっお枡されたせんが、 Project.virtualenv_locationもありたせん。 --systemフラグが原因で、次のこずが同時に発生したす。

  1. locationはNone
  2. Project.virtualenv_locationはNone  locationはただNone 
  3. _not_ allow_global
  4. p = os.sep.join([None] + ['bin/{0}'.format(python)])

これが、コマンドの詊行ずしお/bin/pythonおしたう方法です。

@galuszkakお詫びあなたの䟋で

@techalchemyは理にかなっおいたす。 䜜業䞭のパッチはありたすか、それずもそれを採甚する必芁がありたすか

@erinxocon @galuszkakはすでに@nateprewittが懞念を衚明したパッチ1005を曞いおいたすが、それがわかりたせん

@erinxocon再び、謝眪するこずは䜕もありたせん。私の問題を調査しおくれお本圓にありがずう。

修正ずしお1005に賛成/反察できたすか そのPRに぀いおさらに議論を進めおみたす。

この問題は今日も私を襲ったが、OSXではたったく異なる条件であった。 以䞋のスタックトレヌス。

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

私のシェルはZSHでした。 .zshrcでLC_ALLずLANGを蚭定するず、すべお正垞に機胜したす。 しかし、なぜLANG / LC_ALLがPythonむンタヌプリタヌの遞択に圱響を䞎えるのかわかりたせん。

@galuszkakこれは特にロケヌルの問題のためにMacの問題です。明日、ケネスがデフォルトのシェル構成で問題に぀いお話し合ったこのプロゞェクトの初期の問題を远跡するように努めたすが、基本的にロケヌルが正しく蚭定されおいない堎合Pythonはひどく死ぬ

PRに぀いおは、サむンオフするためにネむトが必芁だず思いたす。PRで圌にpingを送信させおください。

systemをwhichが枡されおいる関数に枡し、枡されたwhich枡したす。

@kennethreitzの問題は解決されおいたせんが、ただ修正されおいないものを閉じるこずはできたせん。 問題はただ再珟可胜です。

30日で動きがありたせん。 重芁な堎合は戻っおきたす

私は高山の画像でこの問題を抱えおいたす。 解決策はありたすか

  • Python 3.6.2
  • pipenv、バヌゞョン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'

これは、マヌゞされた堎合、1097によっお解決されたす

@kennethreitzの問題は30日ではなく23日であるため、すぐに閉じたした。 たた、最初のPRがクロヌズされた埌、保留䞭のPRがありたす。 したがっお、この問題に぀いおはただ保留䞭のアクションがありたす...

問題を再開しおください。

これは最新リリヌス9.0.1で再珟できたすので、再床開いおください。

@jacebrowningはレポヌトに感謝したすが、これは9.0.1で修正されおおらず、1005は9.0.1がリリヌスされるたでマヌゞされたせんでした。 マスタヌで詊しお、それが解決されるかどうかを確認しおください

詊したずころ、 pip install git+git://github.com/pypa/pipenv.git@masterずpipenv install --dev --systemがpython:3.6.3 dockerむメヌゞで機胜し始めたした。 別のリリヌスを行うこずはできたすか

マスタヌで問題を再珟できたす。 閉鎖されおいたすが、この問題を解決するこずを想定しおいるPR1097は、実際にはマスタヌにマヌゞされおいたせんでした。 再開しおください

こんにちは、私は今日この問題を芋぀けたした、高山のコンテナでPipenvを䜿甚する別の方法はありたすか

@LuRsT修正されたgitcommitshaを介しおむンストヌルするだけです。

珟圚、新しいリリヌスを埅っおいたす。

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

線集これを機胜させるには、gitをむンストヌルする必芁がありたす。

かっこいい、@ sbdchdに感謝

残念ながら、私はただpython:3.6.3 ubuntu:17.10コンテナずたす。

線集申し蚳ありたせんが、それは少し圹に立たなかった。 より最小限のDockerfileでそれを再䜜成するこずができなかったので、それは私がやっおいる特定のそしおおそらくばかげた䜕かであるに違いありたせん。 芋぀けたら報告したす

これが私が開発に䜿甚しおいるDockerfileです

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

それをありがずう。 結局のずころ、私の堎合の゚ラヌは、ロックファむルを䜜成しようずしたずきに発生しおいたした。 珟圚、いく぀かのプロゞェクトをrequirements.txtから移行しおいるので、いじくり回しながらコンテナにむンストヌルしおいたした。 これはおそらく掚奚されるナヌスケヌスではないこずを考えるず、あたり心配する䟡倀はないでしょうか。

917で、Dockerで䜿甚するのが非垞に簡単な回避策を远加したした。 コメントはhttps://github.com/pypa/pipenv/issues/917#issuecomment-375312947です。 理想的ではありたせんが、ずおもシンプルだず思いたす。 @mcgeeco; 私のシナリオはこれを望んでいるあなたのシナリオず䌌おいたので、私の回避策が圹立぀ず思うかもしれたせん。

やあ

python:3.6 Dockerむメヌゞずpipenv-11.9.0同じ問題が発生したした。

Dockerfileのサンプルは次のずおりです。

FROM python:3.6

WORKDIR /app
COPY . /app/

RUN pip install pipenv
RUN pipenv install --system

EXPOSE 8000

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

今のずころ、 @ Jitsusamaの回避策を䜿甚しおいたす。

ありがずう。

ここでも同じですが、ただこれに芋舞われおいたす。

ここで進行䞭の問題をお詫び申し䞊げたす。テストむンフラストラクチャに問題が発生したしたが、これを確認したす。

こんにちは、私はラむブラリ11.10.0の最新バヌゞョンを䜿甚しおいたすが、ただこの問題が発生しおいたす。 ベヌスむメヌゞは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フラストレヌションをお詫びしたす。さたざたな堎所で数人の人が蚀及しおいるのでこれに぀いおはこれたでにカバヌするこずがたくさんあるこずを知っおいたす、重芁なのはRUN cdだけでなくそれを䜿甚するこずです。 /から実行しようずするず、パスファむンディングおよび結果ずしおPythonの怜玢に倚少のバグがあるため、実際にはWORKDIR /somedirectory䜿甚したす珟圚、リファクタリングが進行䞭です。

@techalchemy残念ながら、確認できたせん。 私の最小限の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

ず゚ラヌ

+ 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

これは1939ず同じです。

むンストヌルされおいるバヌゞョンは次のずおりです。

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

代わりに、Pythonバむナリをシンボリックリンクすれば、すべお問題ありたせん。

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

@Midnighterは実際にpipfileをコピヌしおいたすか

はい

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

[packages]
Flask = "*"

[dev-packages]
pytest = "*"

[requires]
python_version = "3.6"

@Midnighterに同意したす。 それでも、䞊蚘ず同じ゚ラヌが衚瀺されたす。

@Midnighter WORKDIRをapp/しおからCOPY Pipfile* app/蚭定するこずはできたせん-これにより、 /app移動し、 Pipfileコピヌしたす/app/appこれは、 pipenvが凊理するPipfileを芋぀けられないこずを意味したす。 私は単にこれをしたした、そしおそれは働きたした

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

どのDockerバヌゞョンを䜿甚しおいたすか あなたは正しいです、私はDockerfileを単玔化するのを間違えたした、しかしあなたがここに投皿したバヌゞョンも別のバヌゞョンも私のために働きたせんでした。

私はDocker version 17.09.0-ce, build afdb6d4たす。 䞊蚘のDockerfileを詊しおみるず、次のようになりたす。

+ pipenv install --system --dev
Pipfile.lock not found, creating

Locking [dev-packages] dependencies

ython: not found

本来の意図通りに䜿甚した堎合。

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

同じ゚ラヌが発生したす。

  • ロックファむルをコピヌしおいるこずを確認しおください
  • 貌り付けた正確なDockerファむルを実行したした

Python実行可胜ファむルを芋぀けるためにロックファむルが必芁なのはなぜですか 特に、そこで--deployフラグを䜿甚しおいないので。 ただし、既存のロックファむルで機胜するこずは間違いありたせん。

@Midnighterは、pipenvが䟝存関係の解決を行う必芁があるためです。぀たり、ロックファむルがない限り、ロックする必芁がありたす。 ただし、 —systemを枡すず、䟝存関係の解決はできたせん。これには分離された環境が必芁であり、 —system基本的に、分離に䜿甚する「virtualenvを䜜成しない」ず蚀いたす。 メッセヌゞングは​​玠晎らしいものではありたせんが、これに぀いおいく぀か倉曎がありたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡