์ผ๋ค์ค,์ด๊ฒ ์์ ์๋ ํจ๊ณผ๊ฐ์์ด์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
$ 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์ด ์ค์น ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
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 ๋ชฉ๋ก")์ ๋ฐํํด์ผํ์ง๋ง ์ด์ ๋ ๊ณ ์ ๋ ์์ฒด๋ฅผ ์์ฒด ์ข
์์ฑ์ผ๋ก ํฌํจํฉ๋๋ค.
ํจํค์ง ์์ฒด๋ฅผ ์์ฒด ์ข ์์ฑ์ผ๋ก ๊ณ ์ ํ๋ ๊ฒ์ด ์ค์ ๋ก ์๋ชป๋ ์ด์ ๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ข ์์ฑ ํด๊ฒฐ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
InstallRequirements
๋ชฉ๋ก ์ธ initial_constraints_set
์ต๋๋ค (์ : requests>=2.18
).additional_constraints
๋ฐ candidate
๋ฅผ ๋น ์งํฉ์ผ๋ก ์ ์ํฉ๋๋ค.initial_constraints_set
๋ฐ additional_constraints
์ ๊ฒฐํฉ์ ์กด์คํ๋ candidate
(์ : requests==2.18.4
) ์ธํธ๋ฅผ ์ ํํฉ๋๋ค.additional_constraints
(์ : certifi>=2017.4.17
)๋ก ๊ฐ์ ธ์ ๊ฒฐํฉํฉ๋๋ค.additional_constraints
์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ candidate
์ง์ฐ๊ณ 3์ผ๋ก ๋์๊ฐ๋๋ค.์ด์ ์์ ์ฌํญ์ ์ผ๋์๋๊ณ ๋ฌธ์ ๋ฅผ ์ฌํ ํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ค๋ฉด 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
pipenv install sanic-plugins-framework==0.5.0.dev20171225
์
๋ ฅํ์ ๋์ด ํฐ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋์์ต๋๋ค. ์์ ๋ชจ๋ ๋ฒ์ ์ด '0.5.0.dev20171225'๋ณด๋ค ํฌ์ง ์์ ์ ์์ต๋๋ค.pipenv lock โpre โclear
๋น์ ์ ๋นํธ๋ฅผ ๊ณต์ ํ๊ณ ๋ต๋ณ์ @techalchemy ๋น์ ์ @Jasonsey ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ํน๋ณํ sanic-plugins-framework
๋ฌธ์ ๊ฐ ์์๊ณ , --pre
(_ ์ฌ์ ๋ฆด๋ฆฌ์ค ํ์ฉ ._ ํ๋๊ทธ)๋ฅผ ์ถ๊ฐํ๋ฉด ํจํค์ง๋ฅผ ์ค์นํ๋ ๋ฐ ๋์์ด๋์์ต๋๋ค ๐
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์์ต๋๊น? ๋๋ ์ฌ์ ํ ๋๊ฐ์ ์๋ชป๋ ํ๋์ํ๊ณ ์์ต๋๋ค.
https://github.com/pypa/pipfile/issues/114
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์์ต๋๊น? ๋๋ ์ฌ์ ํ ๋๊ฐ์ ์๋ชป๋ ํ๋์ํ๊ณ ์์ต๋๋ค.
https://github.com/pypa/pipfile/issues/114