Pipenv: pip์— ์˜ํ•ด ์ž ๊ธด ์ž˜๋ชป๋œ ์ข…์†์„ฑ(๋ฒ„์ „)

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

flower ์„ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ pipenv lock ์ด(๊ฐ€) ์š”๊ตฌ ์‚ฌํ•ญ(tornado>=4.2.0,<5.0.0)์— ์ง€์ •๋œ ๋ฒ„์ „ ๋Œ€์‹  ์ตœ์‹  tornado ๋ฒ„์ „(5.1)์„ ์„ ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ) (2.7.15 ๋ฐ 3.7์—์„œ ํ…Œ์ŠคํŠธ)

์˜ˆ์ƒ ๊ฒฐ๊ณผ

์ ์ ˆํ•œ ํ† ๋„ค์ด๋„ ๋ฒ„์ „ ์„ ํƒ

๋ณต์ œ ๋‹จ๊ณ„

$ mkdir tmp1
$ cd tmp1
$ pipenv ์„ค์น˜ ๊ฝƒ


$ pipenv --์ง€์›

Pipenv ๋ฒ„์ „: '2018.7.1'

Pipenv ์œ„์น˜: '/Users/jerzyk/.pyenv/versions/3.7.0/lib/python3.7/site-packages/pipenv'

ํŒŒ์ด์ฌ ์œ„์น˜: '/Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7'

PATH ์˜ ๊ธฐํƒ€ Python ์„ค์น˜:

  • 2.7 : /usr/local/bin/python2.7
  • 2.7 : /Users/jerzyk/.pyenv/shims/python2.7
  • 2.7 : /usr/local/bin/python2.7
  • 2.7 : /usr/local/bin/python2.7
  • 2.7 : /usr/bin/python2.7
  • 3.6 : /Users/jerzyk/.pyenv/shims/python3.6
  • 3.7 : /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7m
  • 3.7 : /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3.7
  • 3.7 : /Users/jerzyk/.pyenv/shims/python3.7
  • 3.7 : /usr/local/bin/python3.7
  • 3.7 : /usr/local/bin/python3.7

  • 3.7.0 : /Users/jerzyk/.pyenv/versions/3.7.0/bin/python

  • 3.7.0 : /Users/jerzyk/.pyenv/shims/python
  • 2.7.15 : /usr/local/bin/python
  • 2.7.15 : /usr/local/bin/python
  • 2.7.10 : /usr/bin/python
  • None : /Users/jerzyk/.pyenv/shims/python2
  • 2.7.15 : /usr/local/bin/python2
  • 2.7.15 : /usr/local/bin/python2
  • 3.7.0 : /Users/jerzyk/.pyenv/versions/3.7.0/bin/python3
  • 3.7.0 : /Users/jerzyk/.pyenv/shims/python3
  • 3.7.0 : /usr/local/bin/python3
  • 3.7.0 : /usr/local/bin/python3

PEP 508 ์ •๋ณด:

{'implementation_name': 'cpython',
 'implementation_version': '3.7.0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '17.7.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 17.7.0: Thu Jun 21 22:53:14 PDT '
                     '2018; root:xnu-4570.71.2~1/RELEASE_X86_64',
 'python_full_version': '3.7.0',
 'python_version': '3.7',
 'sys_platform': 'darwin'}

์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

  • TERM_PROGRAM
  • PYENV_ROOT
  • TERM
  • SHELL
  • TMPDIR
  • Apple_PubSub_Socket_Render
  • TERM_PROGRAM_VERSION
  • TERM_SESSION_ID
  • PYENV_VERSION
  • USER
  • SSH_AUTH_SOCK
  • PYENV_DIR
  • __CF_USER_TEXT_ENCODING
  • PATH
  • PWD
  • LANG
  • PGHOST
  • ITERM_PROFILE
  • PYENV_HOOK_PATH
  • XPC_FLAGS
  • XPC_SERVICE_NAME
  • SHLVL
  • HOME
  • COLORFGBG
  • ITERM_SESSION_ID
  • LOGNAME
  • PGDATA
  • DISPLAY
  • COLORTERM
  • PYTHONDONTWRITEBYTECODE
  • PIP_PYTHON_PATH

Pipenv ์ „์šฉ ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

๋””๋ฒ„๊ทธ ์ „์šฉ ํ™˜๊ฒฝ ๋ณ€์ˆ˜:

  • PATH : /Users/jerzyk/.pyenv/versions/3.7.0/bin:/usr/local/Cellar/pyenv/1.2.6/libexec:/Users/jerzyk/.pyenv/shims:/usr/local/bin:/usr/local/sbin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/MacGPG2/bin
  • SHELL : /bin/bash
  • LANG : en_US.UTF-8
  • PWD : /Users/jerzyk/tmp

Pipfile ์˜ ๋‚ด์šฉ('/Users/jerzyk/tmp/Pipfile'):

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

[packages]
flower = "*"

[dev-packages]

[requires]
python_version = "3.7"

Pipfile.lock ์˜ ๋‚ด์šฉ('/Users/jerzyk/tmp/Pipfile.lock'):

{
    "_meta": {
        "hash": {
            "sha256": "e224f38cf9f41ab210a6546986368cfee3a9087dc1c0d756024e2f6aea1f7e9a"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "amqp": {
            "hashes": [
                "sha256:073dd02fdd73041bffc913b767866015147b61f2a9bc104daef172fc1a0066eb",
                "sha256:eed41946890cd43e8dee44a316b85cf6fee5a1a34bb4a562b660a358eb529e1b"
            ],
            "version": "==2.3.2"
        },
        "babel": {
            "hashes": [
                "sha256:6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669",
                "sha256:8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23"
            ],
            "version": "==2.6.0"
        },
        "billiard": {
            "hashes": [
                "sha256:ed65448da5877b5558f19d2f7f11f8355ea76b3e63e1c0a6059f47cfae5f1c84"
            ],
            "version": "==3.5.0.4"
        },
        "celery": {
            "hashes": [
                "sha256:77dab4677e24dc654d42dfbdfed65fa760455b6bb563a0877ecc35f4cfcfc678",
                "sha256:ad7a7411772b80a4d6c64f2f7f723200e39fb66cf614a7fdfab76d345acc7b13"
            ],
            "version": "==4.2.1"
        },
        "flower": {
            "hashes": [
                "sha256:a7a828c2dbea7e9cff1c86d63626f0eeb047b1b1e9a0ee5daad30771fb51e6d0"
            ],
            "index": "pypi",
            "version": "==0.9.2"
        },
        "kombu": {
            "hashes": [
                "sha256:86adec6c60f63124e2082ea8481bbe4ebe04fde8ebed32c177c7f0cd2c1c9082",
                "sha256:b274db3a4eacc4789aeb24e1de3e460586db7c4fc8610f7adcc7a3a1709a60af"
            ],
            "version": "==4.2.1"
        },
        "pytz": {
            "hashes": [
                "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
                "sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277"
            ],
            "version": "==2018.5"
        },
        "tornado": {
            "hashes": [
                "sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
                "sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
                "sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
                "sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
                "sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
                "sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
                "sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
            ],
            "markers": "python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version >= '2.7'",
            "version": "==5.1"
        },
        "vine": {
            "hashes": [
                "sha256:52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72",
                "sha256:6849544be74ec3638e84d90bc1cf2e1e9224cc10d96cd4383ec3f69e9bce077b"
            ],
            "version": "==1.1.4"
        }
    },
    "develop": {}
}

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

```[[์ถœ์ฒ˜]]
url = " https://pypi.org/simple "
verify_ssl = ์ฐธ
์ด๋ฆ„ = "ํŒŒ์ดํ”ผ"

[ํŒจํ‚ค์ง€]
๊ฝƒ = "*"

[๊ฐœ๋ฐœ ํŒจํ‚ค์ง€]
ํ† ๋„ค์ด๋„ = "<5"

[ํ•„์š”]
python_version = "3.7"
```

์ด ํŒŒ์ผ์€ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. pipenv lock $๋Š” ๋‹ค๋ฅธ ๋‹จ๊ณ„์—์„œ packages ๋ฐ dev-packages ๋ฅผ ์ž ๊ทธ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. flower ์ด tornado>=4.2.0 $์— ์˜์กดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด dev-packages ์— ์ •์˜๋œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ฌด์‹œํ•˜๊ณ  Tornado 5๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. pipenv lock -d ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

```[[์ถœ์ฒ˜]]
url = " https://pypi.org/simple "
verify_ssl = ์ฐธ
์ด๋ฆ„ = "ํŒŒ์ดํ”ผ"

[ํŒจํ‚ค์ง€]
๊ฝƒ = "*"

[๊ฐœ๋ฐœ ํŒจํ‚ค์ง€]
ํ† ๋„ค์ด๋„ = "<5"

[ํ•„์š”]
python_version = "3.7"
```

์ด ํŒŒ์ผ์€ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. pipenv lock $๋Š” ๋‹ค๋ฅธ ๋‹จ๊ณ„์—์„œ packages ๋ฐ dev-packages ๋ฅผ ์ž ๊ทธ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. flower ์ด tornado>=4.2.0 $์— ์˜์กดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด dev-packages ์— ์ •์˜๋œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ฌด์‹œํ•˜๊ณ  Tornado 5๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. pipenv lock -d ๋ฅผ ์‹คํ–‰ํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  [dev-packages] ์š”๊ตฌ ์‚ฌํ•ญ์„ [packages]๋กœ ์˜ฎ๊ฒจ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” [dev-packages]์˜ ๋ชจ๋“  [packages] ํ•ญ๋ชฉ์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ต๋ณ€์ด ๋Šฆ์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์˜ ์ค‘ ์ตœ์†Œํ•œ ํ•œ ๋ถ€๋ถ„์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด dev-packages ๋’ท์ž๋ฆฌ๋ฅผ packages ๋กœ ์ง€์ •ํ•˜์—ฌ ๋ฌด์—‡์ด๋“  ๋ฏธ๋Ÿฌ๋งํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ ์‹ค์ˆ˜๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”. ๋‹น์‹ ์€ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— tornado ( flower )์— ์˜์กดํ•˜๋Š” ์ตœ์ƒ์œ„ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๊ณ  ์–ด๋–ค ๋ฒ„์ „์˜ ํ† ๋„ค์ด๋„๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ์œผ๋ฏ€๋กœ ์–ด๋Š ์ชฝ์ด๋“  ์„ค์น˜ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— packages ์— ํ† ๋„ค์ด๋„ ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ํ•€์ด ์กฐ๊ฑด๋ถ€์ธ ๊ฒฝ์šฐ ํ™˜๊ฒฝ ๋งˆ์ปค ์ถ”๊ฐ€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋žต์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด, ์ด Pipfile ๋Š” ํ”„๋กœ๋•์…˜์—์„œ๋Š” 5.x ํ† ๋„ค์ด๋„๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์—์„œ๋Š” <5 ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋งˆ์ปค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ๋กœ์ปฌ ์ข…์†์„ฑ์€ ๋ฌด์—‡์ด๋“  ํ”„๋กœ๋•์…˜์˜ ์ข…์†์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠน์ • ์ข…์†์„ฑ ํ•ด๊ฒฐ ๋ฌธ์ œ๋Š” ์„ค๊ณ„ ๊ฒฐ์ •์ด๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ ์‚ฌํ•ญ์„ packages ์„น์…˜์œผ๋กœ ์ด๋™ํ•˜๊ณ  ํ™˜๊ฒฝ ๋งˆ์ปค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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