Pipenv: 2018.11.26 : virtualenvλ₯Ό 생성 ν•  λ•Œ pipenvμ—μ„œ pythons 였λ₯˜κ°€ λ°œμƒ 함

에 λ§Œλ“  2018λ…„ 12μ›” 06일  Β·  30μ½”λ©˜νŠΈ  Β·  좜처: pypa/pipenv

문제 μ„€λͺ…

# 3229와 κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμœΌλ―€λ‘œ pipenvλŠ” virtualenvλ₯Ό λ§Œλ“€ λ•Œ 계속 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

$ pipenv --three
['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1344, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'\n", '\nDuring handling of the above exception, another exception occurred:\n\n', 'Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess\n    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))\n', 'TypeError: write() takes exactly one argument (3 given)\n']
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess
    combine_stderr=combine_stderr)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess
    return subprocess.Popen(cmd, **options)
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python/3.6.5_1/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: '/usr/local/bin/pythonz': '/usr/local/bin/pythonz'

During handling of the above exception, another exception occurred:

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 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1114, in invoke
    return Command.invoke(self, ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli/command.py", line 208, in cli
    clear=state.clear,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 574, in ensure_project
    pypi_mirror=pypi_mirror,
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 516, in ensure_virtualenv
    ensure_python(three=three, python=python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 397, in ensure_python
    path_to_python = find_a_system_python(python)
  File "/usr/local/lib/python3.6/site-packages/pipenv/core.py", line 360, in find_a_system_python
    python_entry = finder.find_python_version(line)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 114, in find_python_version
    major=major, minor=minor, patch=patch, pre=pre, dev=dev, arch=arch, name=name
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 396, in find_python_version
    ver = next(iter(self.get_pythons(sub_finder)), None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 279, in get_pythons
    reverse=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 277, in <genexpr>
    (p for p in self._filter_paths(finder) if p.is_python),
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 251, in unnest
    for el in target:
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/mixins.py", line 121, in find_python_version
    for child in unnest(self.pythons.values())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 531, in pythons
    for path, entry in self.children.items():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/cached_property.py", line 35, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 501, in children
    for child_key, child_val in self._gen_children():
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 493, in _gen_children
    entry = PathEntry.create(path=child, **pass_args)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 575, in create
    _new = cls(**creation_args)
  File "<attrs generated init b90d7581ea07925e94241736776cf96c889eb52c>", line 16, in __init__
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 518, in get_py_version
    py_version = PythonVersion.from_path(path=self, name=self.name)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 395, in from_path
    py_version = get_python_version(path.path.absolute().as_posix())
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

μ˜ˆμƒ κ²°κ³Ό

λ‹¨μˆœνžˆ virtualenvλ₯Ό μƒμ„±ν•˜λŠ” λ™μ•ˆ 였λ₯˜ λ‘œκΉ…μ΄ λ°œμƒν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ‹€μ œ κ²°κ³Ό

virtualenv 생성이 μ‹€νŒ¨ν•©λ‹ˆλ‹€.

볡제 단계

$ pipenv --three

pipenv --support μ—μ„œλ„ μ΄λŸ¬ν•œ 였λ₯˜κ°€ λ°œμƒν•˜κ³  지원 정보λ₯Ό μˆ˜μ§‘ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€!

Type Regression Release Blocker Vendored Dependencies

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν˜„μž¬ λ¦΄λ¦¬μŠ€λŠ” ν™•μ‹€νžˆ λ‚˜μ—κ²Œ ν‘Ήμ‹ ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. μ§€λ‚œ λ¬Έμ œμ—μ„œ λ³Έ 또 λ‹€λ₯Έ μž„μ‹œ ν•΄κ²° 방법은 λ‹€μŒκ³Ό 같이 python 경둜λ₯Ό ꡬ체적으둜 μ „λ‹¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

pipenv --three --python=`which python3`

λ‚˜λŠ” λ‹ΉλΆ„κ°„ μ„±κ³΅μœΌλ‘œ 이것을 ν•΄μ™”λ‹€.

λͺ¨λ“  30 λŒ“κΈ€

/usr/local/bin/pythonz 이 더 이상 μœ νš¨ν•œ κ²½λ‘œκ°€ μ•„λ‹Œ 것 κ°™μŠ΅λ‹ˆλ‹€.

흠. κ·Έλž¬μ–΄ μ•Ό ν–ˆμ–΄? pythonzλ₯Ό 직접 μ‚¬μš©ν•œ 적이 μ—†μŠ΅λ‹ˆλ‹€. pipenvλ₯Ό μ„€μΉ˜ν•  λ•Œ κ΄€λ¦¬ν•˜λŠ” pipenv 쒅속성이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

ν‚₯을 μœ„ν•΄ pipenv 2018.11.26을 μ œκ±°ν•˜κ³  λ‹€μ‹œ μ„€μΉ˜ν–ˆμ§€λ§Œ μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

pipenv --support 의 좜λ ₯을 제곡 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 그리고 ν™•μΈν•˜κΈ° μœ„ν•΄,

였 nvm이 방금 λ‹Ήμ‹ μ˜ λ©”μ‹œμ§€λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ–΄λ”˜κ°€μ— κ²½λ‘œμ— 잘λͺ»λœ λ²„μ „μ˜ pipenvκ°€ μ—†μŒμ„ ν™•μΈν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. which pipenv 및 python -m pipenv --version

$ which pipenv
/usr/local/bin/pipenv

python -m pipenv --version λŠ” Homebrewλ₯Ό 톡해 Python 2와 Python 3을 λͺ¨λ‘ μ„€μΉ˜ν–ˆκ³  python λŠ” Python 2.7을 μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έμ— No module named pipenv python -m pipenv --version λ°˜ν™˜ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ˜ 이전 ꢌμž₯ 사항에 따라 Python 3 μ•„λž˜μ— pipenvλ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ python3 λŒ€μ²΄ν•˜μ—¬ λ‹€μŒμ„ μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

$ python3 -m pipenv --version
pipenv, version 2018.11.26

감사!

그래. 그리고 λ„€, λ²„κ·ΈλŠ” μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ—…μŠ€νŠΈλ¦Όμ— νƒœκ·Έλ₯Ό μ§€μ •ν•˜κ³  λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

이에 λŒ€ν•œ μˆ˜μ • 사항이 μ–Έμ œ μΆœμ‹œ 될지에 λŒ€ν•œ 말씀이 μžˆμœΌμ‹­λ‹ˆκΉŒ? 이 λ¬Έμ œκ°€ λ°œμƒν•˜μ—¬ pipenv μš”κ΅¬ 사항을 μ„€μΉ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그런 μš΄μ—†μ΄ @commandtab 의 ν•΄κ²° 방법을 μ‹œλ„

ν˜„μž¬ λ²„μ „μ—μ„œλŠ” pipenvκ°€ μ „ν˜€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

$ which pipenv
/Users/josh/.pyenv/shims/pipenv

$ python -m pipenv --version
pipenv, version 2018.11.26

homebrewμ—μ„œ python3.7κ³Ό 같은 문제둜 μ„€μΉ˜λ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

여기에 긴급함이 μ—†κ±°λ‚˜ 큰 λ¬Έμ œκ°€ μ•„λ‹Œ 것 κ°™μŠ΅λ‹ˆλ‹€. λ­”κ°€ λΉ μ‘Œκ±°λ‚˜ ν˜„μž¬ λ²„μ „μ—μ„œ pipenvκ°€ μ™„μ „νžˆ 손상 λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

ν˜„μž¬ λ¦΄λ¦¬μŠ€λŠ” ν™•μ‹€νžˆ λ‚˜μ—κ²Œ ν‘Ήμ‹ ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. μ§€λ‚œ λ¬Έμ œμ—μ„œ λ³Έ 또 λ‹€λ₯Έ μž„μ‹œ ν•΄κ²° 방법은 λ‹€μŒκ³Ό 같이 python 경둜λ₯Ό ꡬ체적으둜 μ „λ‹¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

pipenv --three --python=`which python3`

λ‚˜λŠ” λ‹ΉλΆ„κ°„ μ„±κ³΅μœΌλ‘œ 이것을 ν•΄μ™”λ‹€.

κ·Έ ν•΄κ²° 방법은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 2018.10.13 둜 λ‹€μš΄ κ·Έλ ˆμ΄λ“œ ν•œ λ‹€μŒ ν•΄λ‹Ή μŠ€λ ˆλ“œ μ—μ„œ ν•΄κ²° 방법을 μ‚¬μš©ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

pipenv install -d --python=$HOME/.pyenv/versions/3.7.1/bin/python

λ‚΄κ°€ 말할 μˆ˜μžˆλŠ” ν•œ, pipenvλŠ” 10 μ›” 이후 μ™„μ „νžˆ λ§κ°€μ‘ŒμŠ΅λ‹ˆλ‹€.

@techalchemy μ—…μŠ€νŠΈλ¦Ό νƒœκ·Έ μˆ˜μ •μ— λŒ€ν•œ 단어가 μžˆμŠ΅λ‹ˆκΉŒ? pipenv virtualenv μƒμ„±μ—λŠ” μ—¬μ „νžˆ ν˜ΈμΆœμ— λŒ€ν•œ ν•΄κ²° 방법이 ν•„μš”ν•©λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€ ❀️

ν†΅ν•©ν•΄μ•Όν•˜λŠ” λ‹€λ₯Έ λͺ¨λ“  μˆ˜μ • 사항은 μ•½κ°„ κ±°μΉ μ—ˆμ§€λ§Œ 이제 CIλŠ” 톡과 ν•  것이며 # 3330으둜 μˆ˜μ • 될 κ²ƒμž…λ‹ˆλ‹€.

그래. 그리고 λ„€, λ²„κ·ΈλŠ” μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ—…μŠ€νŠΈλ¦Όμ— νƒœκ·Έλ₯Ό μ§€μ •ν•˜κ³  λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

μ—¬μ „νžˆ λ¬Έμ œκ°€ μ§€μ†λ˜λ©°μ΄ μˆ˜μ • 사항이 μ–Έμ œ μΆœμ‹œ 될지 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@ command-tab의 ν•΄κ²° 방법이 μ—¬μ „νžˆ μž‘λ™ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

이것은 ν™•μ‹€νžˆ homebrew pipenv 및 pythonμ—μ„œ λ°œμƒν•©λ‹ˆλ‹€.이 λ¬Έμ œκ°€ μ–Όλ§ˆλ‚˜ 였래 μ§€μ†λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈκ°€ μ—†λ‹€λŠ” 것에 λ†€λžμŠ΅λ‹ˆλ‹€.

이 GitHub λ¬Έμ œκ°€ μ’…λ£Œ λ˜μ—ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ μ΄ λ¬Έμ œκ°€ μ—¬μ „νžˆ λ°œμƒν•˜κ³  μžˆμŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

κ΄€λ¦¬μžκ°€ μƒˆλ‘œμš΄ 이슈λ₯Ό λ§Œλ“€μ–΄μ•Όν•©λ‹ˆκΉŒ?

Linux 용 Windows ν•˜μœ„ μ‹œμŠ€ν…œμ— μ„€μΉ˜λœ Ubuntu 18 LTS와 λ™μΌν•œ λ¬Έμ œμž…λ‹ˆλ‹€.

ν•΄κ²° 방법이 μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

@techalchemy 이 λ¬Έμ œλŠ” μ—¬μ „νžˆ μ‘΄μž¬ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ—΄κ±° λ‚˜ μƒˆ λ°œν–‰λ¬Όμ΄ μƒμ„±λ˜κΈ°λ₯Ό μ›ν•œλ‹€κ³  λΆ„λͺ…νžˆ 말씀해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

감사.

Linux 용 Windows ν•˜μœ„ μ‹œμŠ€ν…œμ— μ„€μΉ˜λœ Ubuntu 18 LTS와 λ™μΌν•œ λ¬Έμ œμž…λ‹ˆλ‹€.

여기도 λ§ˆμ°¬κ°€μ§€

@techalchemy λ‹€μ‹œ ν•œλ²ˆ λ΄μ£Όμ„Έμš”

macOs Mojave 및 python 3.7μ—μ„œ λ™μΌν•œ 문제

λ‚˜λ„:

  • μΉ΄νƒˆλ¦¬λ‚˜
  • Python 3.7.

λ‚΄ Pipfileμ—μ„œμ΄ 쀄을 주석 μ²˜λ¦¬ν•˜λ©΄ λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€.

[requires]

#python_version = "3.7.4"

λ‚˜λ„:

  • μΉ΄νƒˆλ¦¬λ‚˜
  • Python 3.7.

λ‚΄ Pipfileμ—μ„œμ΄ 쀄을 주석 μ²˜λ¦¬ν•˜λ©΄ λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€.

[requires]

#python_version = "3.7.4"

ahhhh 이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€, κ°μ‚¬ν•©λ‹ˆλ‹€!

νŠΈμœ— λ‹΄μ•„ κ°€κΈ°
이것은 VSCode의 WSLμ—μ„œλ„ μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€ (λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œ 잘 μž‘λ™ν–ˆκΈ° λ•Œλ¬Έμ— μ™ΈλΆ€ 셸을 μ‹œλ„ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€).

@ λͺ…λ Ή νƒ­
"--python = which python3 "좔가도 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. "--three"λ₯Ό μΆ”κ°€ν•˜μ§€ μ•Šμ•˜κ³  μ‚¬μš© 사둀 / 버전에 ν•„μš”ν•˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

두 가지 ν•΄κ²° 방법을 λͺ¨λ‘ κ°€μ Έ μ™€μ„œ μž‘λ™μ‹œν‚¬ 수있게 된 후이λ₯Ό μ œκ±°ν•˜κ³  ν™˜κ²½μ΄ μ—¬μ „νžˆ 문제λ₯Ό μΌμœΌν‚€λŠ” 지 ν™•μΈν•˜κΈ° μœ„ν•΄ μ„Έ 번째 μ‹œλ„λ₯Όν–ˆμŠ΅λ‹ˆλ‹€ (λ‚˜λ ˆμ΄ν„° : κ·Έλž¬μŠ΅λ‹ˆλ‹€).

λΏ‘ 빡뀨
λ‚˜λŠ” 이것이 3330μ—μ„œ "μ™„μ „νžˆ κ³ μ •"λ˜μ§€ μ•Šμ„ 것이라고 μƒκ°ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? λ™μΌν•œ 증상을 μœ λ°œν•˜λŠ” μ ‘μ„  문제 일 수 μžˆμŠ΅λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” WSL을 μ‚¬μš©ν•˜κ³  있으며 'python3'κ³Ό 'python3.exe'κ°€ λͺ¨λ‘ λ‚΄ WSL κ²½λ‘œμ— μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

μƒˆ 문제λ₯Ό μ—¬λŠ” 것이 κ°€μž₯ μ’‹λ‹€κ³  μƒκ°ν•˜μ‹­λ‹ˆκΉŒ? μΆ”κ°€ 진단을 μ‹€ν–‰ν•˜κ±°λ‚˜ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

arclinux (manjaro)와 ν•¨κ»˜ wsl2λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
pipenvκ°€ 호슀트 ν™˜κ²½ μ°½μ—μ„œ νŒŒμ΄μ¬μ„ ν˜ΈμΆœν•˜μ—¬ μ„€μΉ˜ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ μš°λ¦¬λŠ” νŒŒμ΄μ¬μ„ 찾을 μœ„μΉ˜λ₯Ό λ‹€μŒκ³Ό 같이 μ •μ˜ν•΄μ•Όν•©λ‹ˆλ‹€ :
pipenv --python=<PATH_TO_PYTHON>
λ˜λŠ”
pipenv --python=which python3

λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•©λ‹ˆλ‹€.

Ubuntu 18.04 LTSλ₯Ό μ‚¬μš©ν•˜λŠ” WSLμ—μ„œ 이것이 λ°œμƒν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. pipenvκ°€ μ‹€ν–‰λ˜λŠ” 것을 μ‚¬μš©ν•˜λŠ” λŒ€μ‹  파이썬 인터프리터λ₯Ό μ°ΎλŠ” κ²ƒμ²˜λŸΌ 보이며 in-so-doing은 PATHλ₯Ό μ—­μˆœμœΌλ‘œ νƒμƒ‰ν•©λ‹ˆλ‹€. μ—¬λŸ¬ Python ν™˜κ²½μ΄ μ„€μΉ˜λ˜μ–΄ 있으며 PATHμ—μ„œ μˆ˜λ™μœΌλ‘œ ν•˜λ‚˜λ₯Ό 제거 ν•  λ•Œλ§ˆλ‹€ pipenvλŠ” λ‹€λ₯Έ ν™˜κ²½μ„ μ°Ύμ•„μ„œ λŒ€μ‹  λΆˆν‰ν•©λ‹ˆλ‹€.

Ubuntu 18.04 LTSλ₯Ό μ‚¬μš©ν•˜λŠ” WSLμ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. pipenv install --python $(which python3) μž‘λ™ν•˜μ§€λ§Œ λ‚˜μ€‘μ— pipenv shell 을 μˆ˜ν–‰ν•˜λ©΄ λ‹€μš΄λ‘œλ“œν•΄μ•Όν•˜λŠ” 쒅속성을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

λ˜ν•œ WSL 1 및 Ubuntu 18.04λ₯Ό μ‚¬μš©ν•˜μ—¬ 영ν–₯μ„λ°›μŠ΅λ‹ˆλ‹€. --python $(which python) ν•΄κ²° 방법이 μž‘λ™ν•©λ‹ˆλ‹€.

μ˜ˆμ™Έμ˜ λ§ˆμ§€λ§‰ 뢀뢄에 λŒ€ν•œ 이유, 즉이 λΉ„νŠΈ :

  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

... 첫 번째 μ˜ˆμ™Έλ₯Ό 처리 ν•  λ•Œ 였λ₯˜λ₯Ό μΈμ‡„ν•˜λŠ” ν˜ΈμΆœμ— 버그가 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. -이 λ²„κ·ΈλŠ” 이미 2019λ…„ 1μ›”μ—μ„œ λ§ˆμŠ€ν„° λ’€μͺ½μ— κ³ μ • 된 κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€ https://github.com/pypa/pipenv/commit/574fe7308d9ac81d64da954722f35c9eee0dd467#diff -a59595db75020aeb9f688d6a0b4818e6L162. κ·ΈλŸ¬λ‚˜ pipenv의 μ΅œμ‹  버전이 2018.11.26이기 λ•Œλ¬Έμ— λŒ€λΆ€λΆ„μ˜ 경우 κ³ μ • 버전이 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μˆ˜λ™μœΌλ‘œ 패치 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. /usr/local/lib/<your-python-version>/site-packages/pipenv/vendor/vistir/misc.py μ—΄κ³  162 ν–‰μœΌλ‘œ μ΄λ™ν•˜μ—¬ λ‹€μŒμ„ λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))

... 이에:

sys.stderr.write(f"Error {exc} while executing command " + " ".join(cmd._parts))

이제 더 μ •ν™•ν•œ μ˜ˆμ™Έ λ³΄κ³ μ„œλ₯Ό λ°›κ²Œλ©λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” Windows 기반 Python μ„€μΉ˜λ₯Ό κ°μ§€ν•˜κ³  μ‹€ν–‰ν•˜λŠ” 데 λ¬Έμ œκ°€μžˆλŠ” WSL Linux 기반 pipenv와 κ΄€λ ¨λœ λ¬Έμ œμž…λ‹ˆλ‹€.

Error [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe' while executing command /mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe -c import sys; print(['Traceback (most recent call last):\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/usr/local/lib/python3.6/dist-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "OSError: [Errno 8] Exec format error: '/mnt/c/Users/<user>/AppData/Local/Microsoft/WindowsApps/python3.exe'\n"]

WSL μ‚¬μš©μžμ˜ 경우 Pipfile 의 Python 버전에 λŒ€ν•œ λͺ¨λ“  μš”κ΅¬ 사항이 Linux 기반 Python μ„€μΉ˜μ™€ _ μ •ν™•ν•˜κ²Œ _ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜λ©΄ λ¬Έμ œκ°€ μ™„ν™” 될 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

[requires]
python_version = "3.6.8"  # Make sure this exactly matches an installed version, or remove it.

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

이것이 μ–Όλ§ˆλ‚˜ λ„μ›€μ΄λ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ Pipfile을 μ‚­μ œν•˜κ³  pipenv lock μ‹€ν–‰ ν•œ λ‹€μŒ 이전 Pipfile의 λ‚΄μš©μ„ λ‹€μ‹œ λ„£κ³  pipenv install μ‹€ν–‰ν•˜λ©΄ 영ꡬ적으둜 μž‘λ™ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰