Pipenv: Pipenv๊ฐ€ --system python์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  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 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 ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‚ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ pipenv install --system ์—์„œ ์‹คํŒจํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ด๊ฑธ ์™œ ์•Œ์•„? ์ž˜๋ชป ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
```(Pdb) ํŒŒ์ด์ฌ_๊ฒฝ๋กœ
'/๋นˆ/ํŒŒ์ด์ฌ'
(Pdb) which('ํŒŒ์ด์ฌ')
'/๋นˆ/ํŒŒ์ด์ฌ'
(Pdb) ์ธ์‡„(sys.executable)
'/usr/local/bin/python'

/ # /bin/ํŒŒ์ด์ฌ
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์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์„ค์น˜์— ์‹คํŒจํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ ๋‹จ๊ณ„

ํ•ด๋‹น ๋„์ปค ์ด๋ฏธ์ง€์˜ pipenv install --system ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@kennethreitz ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ์€

๋ชจ๋“  46 ๋Œ“๊ธ€

@galuszkak ํฅ๋ฏธ sys.executable ๋Š” pdb์— ๋”ฐ๋ผ ์„ค์ •๋˜์ง€๋งŒ ์‹ค์ œ๋กœ which() ํ˜ธ์ถœํ•  ๋•Œ โ€”system ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ virtualenv ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ๋ฌด์‹ค์— ๋“ค์–ด๊ฐˆ ๋•Œ ๊ณ ์น  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์‰ฌ์›Œ์•ผ ํ•˜๋Š” ๊ด€๋ จ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค: https://github.com/kennethreitz/pipenv/blob/master/pipenv/utils.py#L406

์šฐ๋ฆฌ๊ฐ€ ์ด ๋ชจ๋“  ์ผ์„ ํ•˜๋Š” ์ด์œ ๋Š” ์ฃผ๋กœ 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 flag๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@galuszkak ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ์ด ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. PIP_PYTHON_PATH๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” docker alpine์—์„œ ๋” ๋งŽ์€ ์ž‘์—…์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@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

ํ•ํŒŒ์ผ:

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

ONBUILD RUN๊ณผ ๊ทธ๋ƒฅ RUN์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@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. _์•„๋‹˜_ allow_global
  4. p = os.sep.join([None] + ['bin/{0}'.format(python)])

์ด๊ฒƒ์ด ๋ช…๋ น ์‹œ๋„๋กœ /bin/python ๋กœ ๋๋‚˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

@galuszkak ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ๊ท€ํ•˜์˜ ์˜ˆ์—์„œ ์ „๋‹ฌ๋œ -it sh ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@techalchemy ๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์ค‘์ธ ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํŒจ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@erinxocon @galuszkak ์€ @nateprewitt ๊ฐ€ ์šฐ๋ ค๋ฅผ ํ‘œ๋ช…ํ•œ ํŒจ์น˜(#1005)๋ฅผ ์ด๋ฏธ ์ž‘์„ฑํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์–ด๋””์—์„œ ๋‚จ๊ฒŒ ๋ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@erinxocon ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ ๋ฌธ์ œ๋ฅผ

์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ #1005์— ๋™์˜/๋ฐ˜๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ PR์— ๋Œ€ํ•œ ํ† ๋ก ์„ ๋” ์ง„ํ–‰ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์˜ค๋Š˜ ๋‹ค์‹œ ๋‚˜์—๊ฒŒ ๋‹ฅ์ณค์ง€๋งŒ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์กฐ๊ฑด์˜ OS X์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์Šคํƒ ์ถ”์ .

โžœ  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์ด ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์„ ํƒ์— ์˜ํ–ฅ์„ ๋ฏธ์ณ์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@galuszkak ๊ทธ๊ฒƒ์€ ๋กœ์ผ€์ผ ๋ฌธ์ œ๋กœ ์ธํ•ด ํŠนํžˆ Mac์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Kenneth๊ฐ€ ๊ธฐ๋ณธ ์…ธ ๊ตฌ์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ผ€์ผ์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ํ”„๋กœ์ ํŠธ์˜ ์ดˆ๊ธฐ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด์ผ์„ ๊ธฐ์–ตํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์€ ๋”์ฐํ•˜๊ฒŒ ์ฃฝ๋Š”๋‹ค

PR์— ๊ด€ํ•ด์„œ๋Š” ๋„ค์ดํŠธ๊ฐ€ ์„œ๋ช…ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. PR์—์„œ ๊ทธ๋ฅผ ํ•‘(ping)ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

which ๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜์— system ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์ „๋‹ฌ๋œ which ํ•ฉ๋‹ˆ๋‹ค.

@kennethreitz ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ์€

30์ผ ๋™์•ˆ ์›€์ง์ž„์ด ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์•ŒํŒŒ์ธ ์ด๋ฏธ์ง€์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

  • ํŒŒ์ด์ฌ 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 ๋ณด๊ณ 

๋ฐฉ๊ธˆ ์‹œ๋„ํ–ˆ๋Š”๋ฐ pip install git+git://github.com/pypa/pipenv.git@master ๋ฐ pipenv install --dev --system ๊ฐ€ ๋‚ด python:3.6.3 ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋งˆ์Šคํ„ฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ซํ˜€์žˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ PR #1097์€ ์‹ค์ œ๋กœ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š”

์•ˆ๋…•ํ•˜์„ธ์š”, ์˜ค๋Š˜์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ŒํŒŒ์ธ ์ปจํ…Œ์ด๋„ˆ์—์„œ Pipenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@LuRsT ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” git commit sha๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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 @sbdchd ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ, ์—ฌ๊ธฐ pipenv์˜ ๋ชจ๋“  ๋ฒ„์ „, ์šฉ๊ธฐ ์–ธ๊ธ‰ํ–ˆ๋‹ค.

์ˆ˜์ •: ์กฐ๊ธˆ ๋„์›€์ด ๋˜์ง€ ๋ชปํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋” ์ตœ์†Œํ•œ์˜ Dockerfile๋กœ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์—†์—ˆ์œผ๋ฏ€๋กœ ๋‚ด๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ํŠน์ •(์•„๋งˆ๋„ ์–ด๋ฆฌ์„์€) ์ž‘์—…์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฐพ์œผ๋ฉด ๋‹ค์‹œ ์‹ ๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋‹ค์Œ์€ dev์— ์‚ฌ์šฉํ•˜๋Š” 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 ํ•˜์ง€๋งŒ๋ฅผ 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

๋Œ€์‹  ํŒŒ์ด์ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

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

๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค
  • ๋‚ด๊ฐ€ ๋ถ™์—ฌ ๋„ฃ์€ ์ •ํ™•ํ•œ ๋„์ปค ํŒŒ์ผ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

Python ์‹คํ–‰ ํŒŒ์ผ์„ ์ฐพ๋Š” ๋ฐ ์ž ๊ธˆ ํŒŒ์ผ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŠนํžˆ --deploy ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๊ธฐ ๋•Œ๋ฌธ์—. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ์กด ์ž ๊ธˆ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค.

@Midnighter pipenv๋Š” ๊ทธ๊ฒƒ์ด ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š” ๊ณ ์ •ํ–ˆ๋‹ค ์˜๋ฏธ ์˜์กด์„ฑ ํ•ด๊ฒฐ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—. ๊ทธ๋Ÿฌ๋‚˜ โ€”system ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ข…์†์„ฑ ํ•ด๊ฒฐ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์„ ํ•„์š”๋กœ ํ•˜๊ณ  โ€”system ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ฒฉ๋ฆฌ์— ์‚ฌ์šฉํ•  '๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค'๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๊ฐ€ ์ข‹์ง€๋Š” ์•Š์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰