์ด ๋ฌธ์ ๋ # 1779์ ๋น์ทํ์ง๋ง ํด๊ฒฐ์ฑ ์ ์ ์๊ฒ ํจ๊ณผ๊ฐ ์๋ค๊ณ ๋งํ์ต๋๋ค.
PyInstaller
ํจํค์ง์ ํน์ ๋ฒ์ ์ ์ค์นํด์ผํ์ง๋ง PyInstaller
๋ PyUpdater
์ ์ข
์์ฑ์ด๋ฉฐ ๋ด ํ๋ก์ ํธ์๋ ํ์ํ๋ฉฐ ๋ค๋ฅธ ํน์ PyInstaller
๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
$ python -m pipenv.help
์ถ๋ ฅ :
python -m pipenv.help
C:\Program Files (x86)\Python36-32\python.exe: No module named pipenv.help
๋๋ ์ด๊ฒ์ด์ด ์ถ๋ ฅ์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๊ทธ๊ฒ์ ์๋์ํฌ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋์์ด ํ์ํ์ญ๋๊น? ์ ๋ pipenv ๋ฒ์ 11.0.2๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
PyInstaller์ ์ต์ develop
๋ธ๋์น๊ฐ ์ค์น๋์ด ์์ด์ผํ๋ฉฐ PyUpdater๊ฐ์ด๋ฅผ PyInstaller-3.3.1
๋ฒ์ ์ผ๋ก ์ฌ์ ์ํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. # 1779์์ ์ ์ํ๋๋ก Pipfile์ [packages]
์์ PyInstaller ์์ PyUpdater๋ฅผ ๋ฐฐ์นํ์ต๋๋ค.
Pipfile์ ์ค์ํ ๋ถ๋ถ์ด ๋ค์๊ณผ ๊ฐ์์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด :
PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}
๋๋ ๋ค์๊ณผ ๊ฐ์ด :
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}
PyUpdater = "*"
Pipfile.lock์ PyInstaller ๋ฒ์ ์ 3.3.1
์ด๊ณ ์ด ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ ์ pipenv uninstall pyinstaller
PyInstaller๋ฅผ ์ ๊ฑฐํ ๋ค์ pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
๋ค์ ์ค์นํ๋ฉด Successfully installed PyInstaller-3.4.dev0+b31794cf1
๋์ง๋ง ์ค์ ๋ก๋ 3.3.1
๋ฒ์ ์ด ์ค์น๋์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๋์ .
# Pipfile
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
PyUpdater = "*"
PyInstaller = {git = "https://github.com/pyinstaller/pyinstaller", ref = "develop"}
pipenv install
๋ฒ์ ํ์ธ : pipenv run pyinstaller --version
๋๋
์๋ก์ด ๊นจ๋ํ ํ๊ฒฝ ์กฐ์ฑ
pipenv install pyupdater
pipenv uninstall pyinstaller
pipenv install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
๋ฒ์ ํ์ธ : pipenv run pyinstaller --version
ํ์ธํ์ต๋๋ค. ์ฌ๊ธฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ชป๋์์ต๋๋ค.
์ข์์ : ์ฃผ๋ฌธ์ ์ ๊ทธ๊ฑฐ๋ --sequential
์ฌ์ฉํ ๋๋ง ์ค์ํ๋ฉฐ zip ํ์ผ์ ์ ๋๋ก ํด๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. -e
์ฌ์ฉํด ๋ณผ ์ ์์ง๋ง ์ด๊ฒ์ด ์๋ํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ค์น๋ ๋์์ ์ด๋ฃจ์ด ์ง๋ฏ๋ก pipfile ์์๋ ๋ง์ ์์
์ ์ํํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ต์์ ์ข ์์ฑ์ ํญ์ IMO์์ ์น๋ฆฌํด์ผํฉ๋๋ค. PyInstaller๋ Pipfile (์ฆ, ์ต์์ ์์ค)์ ์ง์ ๋์ด ์์ผ๋ฏ๋ก ๋ฒ์ ์ ๋ณด๋ PyUpdater์ ์ข ์์ฑ ์ฌ์์ ์ํด ์ฌ์ ์๋์ด์๋ ์๋ฉ๋๋ค. ํฉ๋ฆฌ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ง๋ง ์๋์ผ๋ก ๋ฌด์ํ์ง ์๋ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค.
๋ง์คํฐ์์ ๋ฌด์์ํฉ๋๊น
PyUpdater์์ ์๊ตฌํ๋๋๋ก PyInstaller๋ฅผ PyPI์ ๋ฒ์ ์ผ๋ก ํ์ธํฉ๋๋ค. Windows์์ ์ป์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"_meta": {
"hash": {
"sha256": "c0d9cbadaa9e85bb1b87408b1e0b428414754623d472d64deb2a5bd69ff9bf2c"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"altgraph": {
"hashes": [
"sha256:49dc134049903cc73fb76ca3cc9bef5b2b8c01c28732dd29594f99af2b449fc5",
"sha256:fc28b986a68fde8d3ff0e6d6ba3fbdd2cd562d11d45ef7c7735fbd826c9eec2e"
],
"version": "==0.15"
},
"appdirs": {
"hashes": [
"sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
"sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
],
"version": "==1.4.3"
},
"bsdiff4": {
"hashes": [
"sha256:5a022ff4c1d1de87232b1c70bde50afbb98212fd246be4a867d8737173cf1f8f"
],
"version": "==1.1.4"
},
"certifi": {
"hashes": [
"sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
"sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
],
"version": "==2018.4.16"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"dsdev-utils": {
"hashes": [
"sha256:cbe18eb0104b56e19087d60b765d7875b114acce01b1aceca9120f0556ab109d"
],
"version": "==0.9.6"
},
"ed25519": {
"hashes": [
"sha256:2991b94e1883d1313c956a1e3ced27b8a2fdae23ac40c0d9d0b103d5a70d1d2a"
],
"version": "==1.4"
},
"future": {
"hashes": [
"sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
],
"version": "==0.16.0"
},
"macholib": {
"hashes": [
"sha256:7f76a7ef4f58f85889dec25fb532bad5acfd461c444738dfeb2e7bf855d5906b",
"sha256:9aeec52d7da59912b15445d08b08d95cee48414f01dd035be06f04a825973c08"
],
"version": "==1.9"
},
"pbr": {
"hashes": [
"sha256:3747c6f017f2dc099986c325239661948f9f5176f6880d9fdef164cb664cd665",
"sha256:a9c27eb8f0e24e786e544b2dbaedb729c9d8546342b5a6818d8eda098ad4340d"
],
"version": "==4.0.4"
},
"pefile": {
"hashes": [
"sha256:675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854"
],
"version": "==2017.11.5"
},
"pyinstaller": {
"hashes": [
"sha256:715f81f24b1ef0e5fe3b3c71e7540551838e46e9de30882aa7c0a521147fd1ce"
],
"version": "==3.3.1"
},
"pypiwin32": {
"hashes": [
"sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775",
"sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"
],
"version": "==223"
},
"pyupdater": {
"hashes": [
"sha256:61e796063131bcde4e2467580c0add3a2e77cd0b0533a1b559f066e4c127570e"
],
"index": "pypi",
"version": "==2.5.3"
},
"pywin32": {
"hashes": [
"sha256:0df9b008caef10af0d674c483316c28dcf78391332d9d5d380fab667ebf2d7d1",
"sha256:249391eb924b8376826e6f84d143d1dcc0e400b238b511d5fbd3811f6ed9ad50",
"sha256:42f48567e36b787901ff3da20de5a134cd9880cc90832e2aad60951f058699f0",
"sha256:9eff897796c9d76a213134257a01b6f8a122c55e0772847fba313a8091f3ec44",
"sha256:c7ea0deabcc324e5b74084b5452003109c592d1aedbe9e9289ed55b26d9b0c7f",
"sha256:da422d4067d98b49fbb19d851900a5fc38c61eab0ee803574c27c42309173ebe",
"sha256:f0f0e7c82ee334dd6e888b9b5beb05fd8947355fa7a15644c810bb4ea0079ca6",
"sha256:fb3c85907918fd01a72ee146d323d220771dee151c0cfa5630c2f35797ffb116"
],
"version": "==223"
},
"six": {
"hashes": [
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
],
"version": "==1.11.0"
},
"stevedore": {
"hashes": [
"sha256:e3d96b2c4e882ec0c1ff95eaebf7b575a779fd0ccb4c741b9832bed410d58b3d",
"sha256:f1c7518e7b160336040fee272174f1f7b29a46febb3632502a8f2055f973d60b"
],
"version": "==1.28.0"
},
"urllib3": {
"hashes": [
"sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
"sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
],
"version": "==1.22"
}
},
"develop": {}
}
@uranusjr ์ ๋ฐ์ดํธ ๋ requirementslib๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๊ธฐ์ ๋ํด ์๋ํ์ญ์์ค.
bugfix / 2260๊ณผ ๋์ผ : / ( pipenv lock --clear
)
๋๋ ์ด๊ฒ์ด ํธ์ง ๊ฐ๋ฅ ๋ชจ๋๋ก ์ค์น๋์ง ์๋๋ค๋ ๊ฒ์ ์์ ์ฐจ๋ฆด๋ฟ์ ๋๋ค. ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ํธ์ง ๊ฐ๋ฅ ๋ชจ๋๊ฐ ์๋ ํญ๋ชฉ์ ๋ํด์๋ ์ข ์์ฑ ํด๊ฒฐ์ ์ง์ํ์ง ์์ต๋๋ค.
์, ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋์ง ์ ๊ฒ ๊ฐ์์!
์๋ ํ์ธ์. ๋๋ ์ด์ ๋์จํ๊ฒ ์ด๊ฒ์ ์ธ๊ธํ๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ง๋ ๋ฒ๊ทธ๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
Pipfile
ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[packages]
foo = "*"
bar = {git = "https://github.com/bar/bar", ref = "bar"}
์ฒ์์๋ github์์ ์ค๋ bar
ํจํค์ง๋ก ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์ ๊ฒผ์ต๋๋ค. pipenv update
bar
์คํ ํ ํ foo
๋ฅผ ์ข
์์ฑ์ผ๋ก ์ถ๊ฐํ์ต๋๋ค. ๋์ค์ ์ ๊ธ ๋ foo
๊ฐ PyPI ๋ฒ์ ์ผ๋ก ํ์ธ๋์์ต๋๋ค.
editable= True
์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.