Pipenv: ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํšŒ๊ท€?

์— ๋งŒ๋“  2017๋…„ 10์›” 10์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pipenv

์ผ€๋„ค์Šค,์ด๊ฒŒ ์˜ˆ์ „์—๋Š” ํšจ๊ณผ๊ฐ€์žˆ์–ด์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ pipenv --version
pipenv, version 8.2.6

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

[packages]
django-cms = "*"
django = "*"

$ pipenv lock             
Locking [dev-packages] dependenciesโ€ฆ
Locking [packages] dependenciesโ€ฆ
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches django<1.11,==1.11.6,>=1.8
Tried: 1.1.3, 1.1.3, 1.1.4, 1.1.4, 1.2, 1.2, 1.2.1, 1.2.1, 1.2.2, 1.2.2, 1.2.3, 1.2.3, 1.2.4, 1.2.4, 1.2.5, 1.2.5, 1.2.6, 1.2.6, 1.2.7, 1.2.7, 1.3, 1.3, 1.3.1, 1.3.1, 1.3.2, 1.3.2, 1.3.3, 1.3.3, 1.3.4, 1.3.4, 1.3.5, 1.3.5, 1.3.6, 1.3.6, 1.3.7, 1.3.7, 1.4, 1.4, 1.4.1, 1.4.1, 1.4.2, 1.4.2, 1.4.3, 1.4.3, 1.4.4, 1.4.4, 1.4.5, 1.4.5, 1.4.6, 1.4.6, 1.4.7, 1.4.7, 1.4.8, 1.4.8, 1.4.9, 1.4.9, 1.4.10, 1.4.10, 1.4.11, 1.4.11, 1.4.12, 1.4.12, 1.4.13, 1.4.13, 1.4.14, 1.4.14, 1.4.15, 1.4.15, 1.4.16, 1.4.16, 1.4.17, 1.4.17, 1.4.18, 1.4.18, 1.4.19, 1.4.19, 1.4.20, 1.4.20, 1.4.21, 1.4.21, 1.4.22, 1.4.22, 1.5, 1.5, 1.5.1, 1.5.1, 1.5.2, 1.5.2, 1.5.2, 1.5.2, 1.5.3, 1.5.3, 1.5.4, 1.5.4, 1.5.5, 1.5.5, 1.5.6, 1.5.6, 1.5.7, 1.5.7, 1.5.8, 1.5.8, 1.5.8, 1.5.8, 1.5.9, 1.5.9, 1.5.10, 1.5.10, 1.5.11, 1.5.11, 1.5.12, 1.5.12, 1.5.12, 1.5.12, 1.6, 1.6, 1.6, 1.6, 1.6.1, 1.6.1, 1.6.1, 1.6.1, 1.6.2, 1.6.2, 1.6.2, 1.6.2, 1.6.3, 1.6.3, 1.6.3, 1.6.3, 1.6.4, 1.6.4, 1.6.4, 1.6.4, 1.6.5, 1.6.5, 1.6.5, 1.6.5, 1.6.6, 1.6.6, 1.6.6, 1.6.6, 1.6.7, 1.6.7, 1.6.7, 1.6.7, 1.6.8, 1.6.8, 1.6.8, 1.6.8, 1.6.9, 1.6.9, 1.6.9, 1.6.9, 1.6.10, 1.6.10, 1.6.10, 1.6.10, 1.6.11, 1.6.11, 1.6.11, 1.6.11, 1.7, 1.7, 1.7, 1.7, 1.7.1, 1.7.1, 1.7.1, 1.7.1, 1.7.2, 1.7.2, 1.7.2, 1.7.2, 1.7.3, 1.7.3, 1.7.3, 1.7.3, 1.7.4, 1.7.4, 1.7.4, 1.7.4, 1.7.5, 1.7.5, 1.7.5, 1.7.5, 1.7.6, 1.7.6, 1.7.6, 1.7.6, 1.7.7, 1.7.7, 1.7.7, 1.7.7, 1.7.8, 1.7.8, 1.7.8, 1.7.8, 1.7.9, 1.7.9, 1.7.9, 1.7.9, 1.7.10, 1.7.10, 1.7.10, 1.7.10, 1.7.11, 1.7.11, 1.7.11, 1.7.11, 1.8a1, 1.8a1, 1.8b1, 1.8b1, 1.8b2, 1.8b2, 1.8rc1, 1.8rc1, 1.8, 1.8, 1.8, 1.8, 1.8.1, 1.8.1, 1.8.1, 1.8.1, 1.8.2, 1.8.2, 1.8.2, 1.8.2, 1.8.3, 1.8.3, 1.8.3, 1.8.3, 1.8.4, 1.8.4, 1.8.4, 1.8.4, 1.8.5, 1.8.5, 1.8.5, 1.8.5, 1.8.6, 1.8.6, 1.8.6, 1.8.6, 1.8.7, 1.8.7, 1.8.7, 1.8.7, 1.8.8, 1.8.8, 1.8.8, 1.8.8, 1.8.9, 1.8.9, 1.8.9, 1.8.9, 1.8.10, 1.8.10, 1.8.10, 1.8.10, 1.8.11, 1.8.11, 1.8.11, 1.8.11, 1.8.12, 1.8.12, 1.8.12, 1.8.12, 1.8.13, 1.8.13, 1.8.13, 1.8.13, 1.8.14, 1.8.14, 1.8.14, 1.8.14, 1.8.15, 1.8.15, 1.8.15, 1.8.15, 1.8.16, 1.8.16, 1.8.16, 1.8.16, 1.8.17, 1.8.17, 1.8.17, 1.8.17, 1.8.18, 1.8.18, 1.8.18, 1.8.18, 1.9a1, 1.9a1, 1.9b1, 1.9b1, 1.9rc1, 1.9rc1, 1.9rc2, 1.9rc2, 1.9, 1.9, 1.9, 1.9, 1.9.1, 1.9.1, 1.9.1, 1.9.1, 1.9.2, 1.9.2, 1.9.2, 1.9.2, 1.9.3, 1.9.3, 1.9.3, 1.9.3, 1.9.4, 1.9.4, 1.9.4, 1.9.4, 1.9.5, 1.9.5, 1.9.5, 1.9.5, 1.9.6, 1.9.6, 1.9.6, 1.9.6, 1.9.7, 1.9.7, 1.9.7, 1.9.7, 1.9.8, 1.9.8, 1.9.8, 1.9.8, 1.9.9, 1.9.9, 1.9.9, 1.9.9, 1.9.10, 1.9.10, 1.9.10, 1.9.10, 1.9.11, 1.9.11, 1.9.11, 1.9.11, 1.9.12, 1.9.12, 1.9.12, 1.9.12, 1.9.13, 1.9.13, 1.9.13, 1.9.13, 1.10a1, 1.10a1, 1.10a1, 1.10a1, 1.10b1, 1.10b1, 1.10b1, 1.10b1, 1.10rc1, 1.10rc1, 1.10rc1, 1.10rc1, 1.10, 1.10, 1.10, 1.10, 1.10.1, 1.10.1, 1.10.1, 1.10.1, 1.10.2, 1.10.2, 1.10.2, 1.10.2, 1.10.3, 1.10.3, 1.10.3, 1.10.3, 1.10.4, 1.10.4, 1.10.4, 1.10.4, 1.10.5, 1.10.5, 1.10.5, 1.10.5, 1.10.6, 1.10.6, 1.10.6, 1.10.6, 1.10.7, 1.10.7, 1.10.7, 1.10.7, 1.10.8, 1.10.8, 1.10.8, 1.10.8, 1.11a1, 1.11a1, 1.11b1, 1.11b1, 1.11rc1, 1.11rc1, 1.11rc1, 1.11rc1, 1.11, 1.11, 1.11, 1.11, 1.11.1, 1.11.1, 1.11.1, 1.11.1, 1.11.2, 1.11.2, 1.11.2, 1.11.2, 1.11.3, 1.11.3, 1.11.3, 1.11.3, 1.11.4, 1.11.4, 1.11.4, 1.11.4, 1.11.5, 1.11.5, 1.11.5, 1.11.5, 1.11.6, 1.11.6, 1.11.6, 1.11.6, 2.0a1, 2.0a1

$ pipenv graph              
django-cms==3.4.4
  - Django [required: >=1.8,<1.11, installed: 1.11.6]
    - pytz [required: Any, installed: 2017.2]
  - django-classy-tags [required: >=0.7.2, installed: 0.8.0]
    - Django [required: >1.3, installed: 1.11.6]
      - pytz [required: Any, installed: 2017.2]
  - django-formtools [required: >=1.0, installed: 2.1]
    - Django [required: >=1.8, installed: 1.11.6]
      - pytz [required: Any, installed: 2017.2]
  - django-sekizai [required: >=0.7, installed: 0.10.0]
    - django-classy-tags [required: >=0.3.1, installed: 0.8.0]
      - Django [required: >1.3, installed: 1.11.6]
        - pytz [required: Any, installed: 2017.2]
  - django-treebeard [required: >=4.0.1, installed: 4.1.2]
    - Django [required: >=1.7, installed: 1.11.6]
      - pytz [required: Any, installed: 2017.2]
  - djangocms-admin-style [required: >=1.0, installed: 1.2.7]

๋”ฐ๋ผ์„œ Django CMS์—๋Š”> = 1.8, <1.11์ด ํ•„์š”ํ•˜์ง€๋งŒ pipenv๋Š” <1.11, ** == 1.11.6 **,> = 1.8๊ณผ ์ผ์น˜ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๊นŒ?

--skip-lock์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด ์ตœ์‹  Django ์ธ 1.11.6์ด ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CMS ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ฒ„์ „ 1.10์ด ์„ค์น˜ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

Dependency Resolution Type Discussion help wanted

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

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™์€ ์ž˜๋ชป๋œ ํ–‰๋™์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/pypa/pipfile/issues/114

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

pipenv ๊ฐ€ ํ˜„์žฌ ๋ผ์šด๋“œ ํ›„๋ณด์— ์—„๊ฒฉํ•œ ํ•€์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๋‹ค์Œ ๋ผ์šด๋“œ์—์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ํ˜„์žฌ ํ›„๋ณด์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฒ„์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ›„๋ณด๋ฅผ ์ฐพ๋Š” ๋Œ€์‹  ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค (์ด์™€ ๊ฐ™์ด). ์ด๊ฒƒ์ด ํ•ด๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์•ˆ์ •ํ™” ๋  ๋•Œ๊นŒ์ง€ ์ƒˆ๋กœ์šด ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์™„์ „ํžˆ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด ์ „์— pip-tools ๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์บ์‹œ ( --clear )๋ฅผ ์ง€์›Œ์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ด๊ฒƒ์ด pip-tools ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ pip-tools ์˜ ํŒจ์น˜์™€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ๋ฒ”์ธ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
https://github.com/kennethreitz/pipenv/blob/master/pipenv/patched/pip/req/req_set.py#L752

self.requirements.values() ์—๋Š” ๊ณ ์ • ๋œ req_to_install ์ž์ฒด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ข…์†์„ฑ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ž˜๋ชป๋˜์—ˆ์œผ๋ฉฐ, ํ›„์† ํŒจํ‚ค์ง€์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๋ฒ„์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์™€ ๊ฐ™์ด ์ข…์†์„ฑ ํ•ด๊ฒฐ์ด ์‹คํŒจ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ›„๋ณด. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ํ›„๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํ›„๋ณด๊ฐ€๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

@kennethreitz ๋‚ด๊ฐ€ ์ดํ•ด ํ•œ

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

$ pipenv --version
pipenv, version 8.2.7

$ pipenv install
Pipfile.lock not found, creatingโ€ฆ
Locking [dev-packages] dependenciesโ€ฆ
Locking [packages] dependenciesโ€ฆ
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches django==2.0a1,>=1.8,>=1.8.0
Tried: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.5.12, 1.6, 1.6, 1.6.1, 1.6.1, 1.6.2, 1.6.2, 1.6.3, 1.6.3, 1.6.4, 1.6.4, 1.6.5, 1.6.5, 1.6.6, 1.6.6, 1.6.7, 1.6.7, 1.6.8, 1.6.8, 1.6.9, 1.6.9, 1.6.10, 1.6.10, 1.6.11, 1.6.11, 1.7, 1.7, 1.7.1, 1.7.1, 1.7.2, 1.7.2, 1.7.3, 1.7.3, 1.7.4, 1.7.4, 1.7.5, 1.7.5, 1.7.6, 1.7.6, 1.7.7, 1.7.7, 1.7.8, 1.7.8, 1.7.9, 1.7.9, 1.7.10, 1.7.10, 1.7.11, 1.7.11, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8, 1.8.1, 1.8.1, 1.8.2, 1.8.2, 1.8.3, 1.8.3, 1.8.4, 1.8.4, 1.8.5, 1.8.5, 1.8.6, 1.8.6, 1.8.7, 1.8.7, 1.8.8, 1.8.8, 1.8.9, 1.8.9, 1.8.10, 1.8.10, 1.8.11, 1.8.11, 1.8.12, 1.8.12, 1.8.13, 1.8.13, 1.8.14, 1.8.14, 1.8.15, 1.8.15, 1.8.16, 1.8.16, 1.8.17, 1.8.17, 1.8.18, 1.8.18, 1.9a1, 1.9b1, 1.9rc1, 1.9rc2, 1.9, 1.9, 1.9.1, 1.9.1, 1.9.2, 1.9.2, 1.9.3, 1.9.3, 1.9.4, 1.9.4, 1.9.5, 1.9.5, 1.9.6, 1.9.6, 1.9.7, 1.9.7, 1.9.8, 1.9.8, 1.9.9, 1.9.9, 1.9.10, 1.9.10, 1.9.11, 1.9.11, 1.9.12, 1.9.12, 1.9.13, 1.9.13, 1.10a1, 1.10a1, 1.10b1, 1.10b1, 1.10rc1, 1.10rc1, 1.10, 1.10, 1.10.1, 1.10.1, 1.10.2, 1.10.2, 1.10.3, 1.10.3, 1.10.4, 1.10.4, 1.10.5, 1.10.5, 1.10.6, 1.10.6, 1.10.7, 1.10.7, 1.10.8, 1.10.8, 1.11a1, 1.11b1, 1.11rc1, 1.11rc1, 1.11, 1.11, 1.11.1, 1.11.1, 1.11.2, 1.11.2, 1.11.3, 1.11.3, 1.11.4, 1.11.4, 1.11.5, 1.11.5, 1.11.6, 1.11.6, 2.0a1

2.0a1 ๋Š” ๋ถ„๋ช…ํžˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

https://github.com/kennethreitz/pipenv/issues/786 ์œผ๋กœ ์ธํ•ด ์ด์ „ ๋ฒ„์ „์˜ pipenv์—์„œ ์ข…์†์„ฑ ํ•ด๊ฒฐ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

๊ฐ™์€ ๋ฌธ์ œ-ํŠนํžˆ ์š”์ฒญ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ @vphilippon ์˜ ์˜๊ฒฌ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋Š” ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด # 909์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํ•˜๊ณ  # 909์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ์—ฌ๊ธฐ์„œ "๊นŠ์€ ์—‘์ŠคํŠธ๋ผ ํ•ด๊ฒฐ"์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด @maintainers ์ค‘ ํ•œ ์‚ฌ๋žŒ์˜ ์ž…๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์ง€๋งŒ ๋จผ์ € ์•„๋ฌด๊ฒƒ๋„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜๋Š” ๊ณ„์†ํ•ด์„œ ์ˆ˜์ • ์‚ฌํ•ญ์ด์žˆ๋Š” PR์„ ์—ด๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๋…ผ์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ๋ณด์ž.

@vphilippon ์ด๊ฒƒ์€ ์กฐ์ง์—์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Kenneth์˜ ๊ฐœ์ธ ์ €์žฅ์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ˆํƒ€๊น๊ฒŒ๋„ ์šฐ๋ฆฌ ๋ชจ๋‘๋ฅผ ์–ป์„ ์ˆ˜์žˆ๋Š” ํŽธ๋ฆฌํ•œ @ ํƒœ๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. @erinxocon ๊ณผ ๋‚˜ ์ž์‹ ์„ ํ•‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ํ•  ํŒจ์น˜๋Š” ์•ˆํƒ€๊น๊ฒŒ๋„ ์ผ€๋„ค์Šค์˜ ๋จธ๋ฆฌ ์–ด๋”˜๊ฐ€์— ์ž ๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ๋ณผ ์‹œ๊ฐ„์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ํ•  ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด ๊ฐ€์ •์„ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋•Œ๊นŒ์ง€๋Š” ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ๊ฐ€๋ณ๊ฒŒ ์‚ดํŽด๋ณด์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

@nateprewitt ์ข‹์•„ , ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜์ž๋ฅผ ์žก์œผ์„ธ์š”.

๋ญ๊ฐ€ ๋ฌธ์ œ ์•ผ?

https://github.com/kennethreitz/pipenv/issues/875#issuecomment -335570812์—์„œ ์˜ค๋ฅ˜์˜ ์›์ธ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ผ์šด๋“œ์—์„œ ์„ ํƒํ•œ ํ›„๋ณด๊ฐ€ ํ›„๋ณด ์ž์ฒด์˜ ๊ณ ์ • ๋œ ์ข…์†์„ฑ์œผ๋กœ ์ง์ ‘ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค ( ๋‹ค๊ฐ€์˜ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋” ๋งŽ์ด)

https://github.com/kennethreitz/pipenv/issues/875#issuecomment -336609268์—์„œ ํ•ด๋‹น ํ•€์˜ ์†Œ์Šค๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์— ์ถ”๊ฐ€ ๋œ self.requirements.values() ์—๋Š” ํ˜„์žฌ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ํ•€์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. . ์ฆ‰, _prepare_file ๋Š” ํŒจํ‚ค์ง€์˜ ์ข…์†์„ฑ (๋˜๋Š” "์„ค์น˜ํ•  ์ถ”๊ฐ€ InstallRequirements ๋ชฉ๋ก")์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๊ณ ์ • ๋œ ์ž์ฒด๋ฅผ ์ž์ฒด ์ข…์†์„ฑ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์ž์ฒด๋ฅผ ์ž์ฒด ์ข…์†์„ฑ์œผ๋กœ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์ž˜๋ชป๋œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ข…์†์„ฑ ํ•ด๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. InstallRequirements ๋ชฉ๋ก ์ธ initial_constraints_set ์˜ต๋‹ˆ๋‹ค (์˜ˆ : requests>=2.18 ).
  2. additional_constraints ๋ฐ candidate ๋ฅผ ๋นˆ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. initial_constraints_set ๋ฐ additional_constraints ์˜ ๊ฒฐํ•ฉ์„ ์กด์ค‘ํ•˜๋Š” candidate (์˜ˆ : requests==2.18.4 ) ์„ธํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฐ ํ›„๋ณด์— ๋Œ€ํ•ด ๋ชจ๋“  ํ›„๋ณด์˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ์„ additional_constraints (์˜ˆ : certifi>=2017.4.17 )๋กœ ๊ฐ€์ ธ์™€ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  5. additional_constraints ์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ candidate ์ง€์šฐ๊ณ  3์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  6. ์™„๋ฃŒ๋œ ํ›„๋ณด ์„ธํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์œ„์˜ ์‚ฌํ•ญ์„ ์—ผ๋‘์—๋‘๊ณ  ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด Pipfile ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (Django 1.11์„ ์ง€์›ํ•˜๋Š”`django-cms 3.4.5๊ฐ€ ์ถœ์‹œ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ) :

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

[packages]
django-cms = "==3.4.4"
django = "*"

๊ทธ๋ฆฌ๊ณ  ์ด์ œ pipenv lock --verbose --clear :

Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project.
Locking [dev-packages] dependenciesโ€ฆ
Using pip: -i https://pypi.python.org/simple

                          ROUND 1
Current constraints:

Finding the best candidates:

Finding secondary dependencies:
------------------------------------------------------------
Result of round 1: stable, done
Locking [packages] dependenciesโ€ฆ
Using pip: -i https://pypi.python.org/simple

                          ROUND 1
Current constraints:
  django
  django-cms==3.4.4

Finding the best candidates:
  found candidate django==1.11.6 (constraint was <any>)
  found candidate django-cms==3.4.4 (constraint was ==3.4.4)

Finding secondary dependencies:
  django-cms==3.4.4 not in cache, need to check index
  django-cms==3.4.4         requires django-classy-tags>=0.7.2, django-cms==3.4.4, django-formtools>=1.0, django-sekizai>=0.7, django-treebeard>=4.0.1, Django<1.11,>=1.8, djangocms-admin-style>=1.0
  django==1.11.6 not in cache, need to check index
  django==1.11.6            requires django==1.11.6, pytz

New dependencies found in this round:
  adding [u'django', '<1.11,==1.11.6,>=1.8', '[]']
  adding [u'django-classy-tags', '>=0.7.2', '[]']
  adding [u'django-cms', '==3.4.4', '[]']
  adding [u'django-formtools', '>=1.0', '[]']
  adding [u'django-sekizai', '>=0.7', '[]']
  adding [u'django-treebeard', '>=4.0.1', '[]']
  adding [u'djangocms-admin-style', '>=1.0', '[]']
  adding [u'pytz', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2
Current constraints:
  django<1.11,==1.11.6,>=1.8
  django-classy-tags>=0.7.2
  django-cms==3.4.4
  django-formtools>=1.0
  django-sekizai>=0.7
  django-treebeard>=4.0.1
  djangocms-admin-style>=1.0
  pytz

Finding the best candidates:
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches django<1.11,==1.11.6,>=1.8
Tried: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.5.12, 1.6, 1.6, 1.6.1, 1.6.1, 1.6.2, 1.6.2, 1.6.3, 1.6.3, 1.6.4, 1.6.4, 1.6.5, 1.6.5, 1.6.6, 1.6.6, 1.6.7, 1.6.7, 1.6.8, 1.6.8, 1.6.9, 1.6.9, 1.6.10, 1.6.10, 1.6.11, 1.6.11, 1.7, 1.7, 1.7.1, 1.7.1, 1.7.2, 1.7.2, 1.7.3, 1.7.3, 1.7.4, 1.7.4, 1.7.5, 1.7.5, 1.7.6, 1.7.6, 1.7.7, 1.7.7, 1.7.8, 1.7.8, 1.7.9, 1.7.9, 1.7.10, 1.7.10, 1.7.11, 1.7.11, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8, 1.8.1, 1.8.1, 1.8.2, 1.8.2, 1.8.3, 1.8.3, 1.8.4, 1.8.4, 1.8.5, 1.8.5, 1.8.6, 1.8.6, 1.8.7, 1.8.7, 1.8.8, 1.8.8, 1.8.9, 1.8.9, 1.8.10, 1.8.10, 1.8.11, 1.8.11, 1.8.12, 1.8.12, 1.8.13, 1.8.13, 1.8.14, 1.8.14, 1.8.15, 1.8.15, 1.8.16, 1.8.16, 1.8.17, 1.8.17, 1.8.18, 1.8.18, 1.9a1, 1.9b1, 1.9rc1, 1.9rc2, 1.9, 1.9, 1.9.1, 1.9.1, 1.9.2, 1.9.2, 1.9.3, 1.9.3, 1.9.4, 1.9.4, 1.9.5, 1.9.5, 1.9.6, 1.9.6, 1.9.7, 1.9.7, 1.9.8, 1.9.8, 1.9.9, 1.9.9, 1.9.10, 1.9.10, 1.9.11, 1.9.11, 1.9.12, 1.9.12, 1.9.13, 1.9.13, 1.10a1, 1.10a1, 1.10b1, 1.10b1, 1.10rc1, 1.10rc1, 1.10, 1.10, 1.10.1, 1.10.1, 1.10.2, 1.10.2, 1.10.3, 1.10.3, 1.10.4, 1.10.4, 1.10.5, 1.10.5, 1.10.6, 1.10.6, 1.10.7, 1.10.7, 1.10.8, 1.10.8, 1.11a1, 1.11b1, 1.11rc1, 1.11rc1, 1.11, 1.11, 1.11.1, 1.11.1, 1.11.2, 1.11.2, 1.11.3, 1.11.3, 1.11.4, 1.11.4, 1.11.5, 1.11.5, 1.11.6, 1.11.6
  • ๋‹จ์ผ ํ•ด๊ฒฐ ๋ผ์šด๋“œ์—์„œ django==* ๋ฐ django-cms==3.4.4 ์„ (๋ฅผ) ์„ค์น˜ํ•ด์•ผ ํ•จ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„๋ณด์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค : django==1.11.6 , django-cms==3.4.4 .
  • ์ข…์†์„ฑ์„ ์–ป์Šต๋‹ˆ๋‹ค (์ค‘์š”ํ•œ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

    • django-cms==3.4.4 ์—๋Š” django<1.11,>=1.8

    • django ์—๋Š” django==1.11.6 ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. django๋Š” ์ž์ฒด๋ฅผ ํ•„์š”๋กœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ํŒจํ‚ค์ง€ ์ž์ฒด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!)

  • ์ข…์†์„ฑ ์ง€์ •์ž๋ฅผ ํ•จ๊ป˜ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

    • ์ด์ œ django <1.11,==1.11.6,>=1.8 (์ด๊ฒŒ ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...)

  • ์ œ์•ฝ ์กฐ๊ฑด์ด ๋ณ€๊ฒฝ๋˜์–ด ํ›„๋ณด ์„ ํƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  • <1.11,==1.11.6,>=1.8 django ํ›„๋ณด๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

    • Could not find a version that matches django<1.11,==1.11.6,>=1.8 [...]

๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ์–ด์•ผํ–ˆ๋Š”์ง€ ( pip-tools ์—์„œ ํŒจ์น˜๋˜์ง€ ์•Š์€ pip , ์บ์‹œ๋ฅผ ์ง€์šฐ๋Š” --rebuild ์‚ฌ์šฉ) :

  • ๋‹จ์ผ ํ•ด๊ฒฐ ๋ผ์šด๋“œ์—์„œ django==* ๋ฐ django-cms==3.4.4 ์„ (๋ฅผ) ์„ค์น˜ํ•ด์•ผ ํ•จ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„๋ณด์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค : django==1.11.6 , django-cms==3.4.4 .
  • ์ข…์†์„ฑ์„ ์–ป์Šต๋‹ˆ๋‹ค (์ค‘์š”ํ•œ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

    • django-cms==3.4.4 ์—๋Š” django<1.11,>=1.8

    • django ์—๋Š” pytz ์ด ํ•„์š” ํ•˜์ง€๋งŒ django==1.11.6 ์•„๋‹˜

  • ์ข…์†์„ฑ ์ง€์ •์ž๋ฅผ ํ•จ๊ป˜ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

    • ์ด์ œ django <1.11,>=1.8 (ํ›จ์”ฌ ๋‚˜์•„ ์กŒ์Šต๋‹ˆ๋‹ค

  • ์ œ์•ฝ ์กฐ๊ฑด์ด ๋ณ€๊ฒฝ๋˜์–ด ํ›„๋ณด ์„ ํƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  • <1.11,>=1.8 django ํ›„๋ณด๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค.

    • ์ƒˆ๋กœ์šด django ํ›„๋ณด ์„ ํƒ ( django==1.10.8

  • ์ข…์†์„ฑ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉฐ ํ–‰๋ณตํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์Œ, ์ œ๊ฑฐ self.requirements.values() ์— ๋ฐ˜ํ™˜์—์„œ _prepare_file ์ˆ˜์ •์ด ๋ฌธ์ œ๋ฅผ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์™œ ๊ฑฐ๊ธฐ์— ์ถ”๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ ์ผ€๋„ค์Šค๋Š” ๋ฐ˜ํ™˜ ์‹ถ์—ˆ๋‹ค InstallRequirement "ํ•ด๊ฒฐ ๊นŠ์€ ์—‘์ŠคํŠธ๋ผ"(๋‚ด๊ฐ€ ์ •๋ง ์—ฌ๊ธฐ์— ์ŠคํŠธ๋ ˆ์นญ๊ฑฐ์•ผ)์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ฑฐ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•œ ํ›„ ํ›„๋ณด ์ž์ฒด์— ๋Œ€ํ•œ ๊ฐœ์ฒด๋ฅผ. ๋ฐ˜ํ™˜ ๋œ ๊ฐ’์— ์ถ”๊ฐ€ InstallRequirement ๊ฐœ์ฒด๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํŒจ์น˜๋ฅผ ํŒจ์น˜ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋จผ์ € ๊ณ ์ •์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ณ ์˜๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค ๊ณ  ํ™•์‹  ํ•ฉ๋‹ˆ๋‹ค .

๊ทธ๊ฒŒ ๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. โ˜•๏ธ

@vphilippon , ์ž์„ธํ•œ ๋ถ„์„์„ ๋„ฃ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด ae4591b2์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์™œ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ด์— ๋Œ€ํ•œ ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์™€ "๊นŠ์€ ์ข…์†์„ฑ"์„ ์„ค์น˜ํ•˜๊ธฐ์œ„ํ•œ ์ž‘๋™ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ํ‹ฐ์ผ“์ด์—†๊ณ  ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๊ฐ€ ๋„์›€์ด๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ์ด ์‹œ์ ์—์„œ ์ถ”์ธกํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด requests[security] ์™€ ๊ฐ™์€ ์„ ์–ธ์„ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค. certifi[some-extra] ์ข…์†์„ฑ์ด์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‚ด๊ฐ€ ์ ์–ด๋„ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์žฅ๊ณ  ์„ธ๊ณ„์—๋Š” ์ด๋Ÿฐ ์ผ์„ํ•˜๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜์žˆ๋Š” ์˜ˆ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด.

๊ทธ๋ž˜์„œ! ๋ˆ„๊ตฐ๊ฐ€ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์‹คํŒจ์™€ "๊นŠ์€ ์ข…์†์„ฑ"์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ self.requirements.values() ์„ ์–ธ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@nateprewitt ์—ฌ๊ธฐ์— ๋‹น์‹ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/vphilippon/testdeepextra

๊ทธ๋Ÿฌ๋‚˜ "foo [a]๋Š” bar [b]์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค."๊นŠ์€ ํ•ด์ƒ๋„๋Š” pip-tools ์—์„œ ์ด๋ฏธ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ €์žฅ์†Œ๋กœ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ทธ ํŒจ์น˜๋Š” ์›๋ž˜ pip-tools ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌด์–ธ๊ฐ€์— ๋Œ€ํ•ด ๊ฐ€์ • ํ•˜๋“ฏ์ด ์ •ํ™•ํžˆ ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ์—ฌ๊ธฐ์„œ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ๋ ˆํฌ (์ง€๊ธˆ ๋‹น์žฅ ํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค)๋กœ pipenv ์˜ ์ถ”๊ฐ€ ํ•ด๊ฒฐ ๋™์ž‘์„ ํ•ด๋‹น ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. / ๋˜๋Š” pip-tools ์˜ ์ถœ๋ ฅ๊ณผ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค. ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ์ถœ๋ฐœ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches sanic-plugins-framework==0.5.0.dev20171225,>=0.5.0.dev20171225
Tried: 0.2.0.dev20171102, 0.2.0.dev20171102, 0.3.0.dev20171102, 0.3.0.dev20171102, 0.3.1.dev20171102, 0.3.1.dev20171102, 0.3.2.dev20171102, 0.3.2.dev20171102, 0.3.3.dev20171102, 0.3.3.dev20171102, 0.4.0.dev20171103, 0.4.0.dev20171103, 0.4.1.dev20171103, 0.4.1.dev20171103, 0.4.2.dev20171106, 0.4.2.dev20171106, 0.4.4.dev20171107, 0.4.4.dev20171107, 0.4.5.dev20171113, 0.4.5.dev20171113, 0.5.0.dev20171225, 0.5.0.dev20171225, 0.5.2.dev20180201, 0.5.2.dev20180201
  1. ํŒจํ‚ค์ง€ ๋ฒ„์ „์ด '*'์ผ ๋•Œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ '== 0.1.2'์™€ ๊ฐ™์€ ์•Œ๋ ค์ง„ ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ์•ˆํƒ€๊น๊ฒŒ๋„ pipenv install sanic-plugins-framework==0.5.0.dev20171225 ์ž…๋ ฅํ–ˆ์„ ๋•Œ์ด ํฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋ชจ๋“  ๋ฒ„์ „์ด '0.5.0.dev20171225'๋ณด๋‹ค ํฌ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

pipenv lock โ€”pre โ€”clear

๋‹น์‹ ์˜ ๋น„ํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋‹ต๋ณ€์„ @techalchemy ๋‹น์‹ ์„ @Jasonsey ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๋‚˜๋Š” ํŠน๋ณ„ํžˆ sanic-plugins-framework ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ , --pre (_ ์‚ฌ์ „ ๋ฆด๋ฆฌ์Šค ํ—ˆ์šฉ ._ ํ”Œ๋ž˜๊ทธ)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™์€ ์ž˜๋ชป๋œ ํ–‰๋™์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/pypa/pipfile/issues/114

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