์ค๋๋ ๋ฒ๊ทธ๊ฐ ์ฌ์ ํ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. bash ์๊ฒฉ ๋ชจ๋๋ก ํธ์ถํ ๋ PS1: unbound variable
.
๋ถ๋ช ํ virtualenv๋ bash ์๊ฒฉ ๋ชจ๋์ ๊ฑฐ์ ๋น ํ๊ฒฝ ๋ณ์ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ํ ์คํธ๊ฐ ํ์ํ๋ฏ๋ก ์ด์ ๋ํ ํฅํ ํ๊ท๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์ด ๋ฒ๊ทธ๋ ksh
๋ฐ zsh
ํฌํจํ์ฌ ksh
bash
๋ฟ๋ง ์๋๋ผ ์ง์๋๋ ๋ชจ๋ Unix ์
ธ์์ ์ฌํ๋ฉ๋๋ค.
๋ค์์ ๋ฒ๊ทธ๋ฅผ ๋ณต์ ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค.
#!/bin/bash
# same applies to any other bourne compatible shells (is not bash specific)
set -euox pipefail
pip install -U virtualenv
virtualenv xxx
unset PS1
source xxx/bin/activate
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ถ์
ํ์ง๋ง PS=${PS:-}
๋ฅผ ํ์ฑํ ํ ์์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ์ด ํ์ PS๊ฐ ์์ง ์ ์๋์ง ์์ ๊ฒฝ์ฐ ๋น ๋ฌธ์์ด๋ก ์ ์ํ๊ฑฐ๋ ์ ์๋ ๊ฒฝ์ฐ ๊ฐ์ ์ ์งํฉ๋๋ค.
๊ฐ์ ์ข ๋ฅ์ ๋ฒ๊ทธ๊ฐ Python ๋ฒ์ ์ venv์ ์ ์ฉ๋๋ฉฐ ์ด๋ฏธ ๊ณต๊ฐ๋ PR์ด ์์ด ์ด๋ฅผ ๊ณ ์น ์ ์์ต๋๋ค .
๊ฐ์ ์ข ๋ฅ์ ๋ฒ๊ทธ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์กด์ฌํ๋ค๊ณ ํด์ ์์ ๊ตฌํ์ ๋ฏธ๋ฃจ๊ฑฐ๋ ๋ฏธ๋ฃจ์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ ํ์ฅ ๋ณ์ ๊ตฌ๋ฌธ์ POSIX์ ํธํ ๋๋ฉฐ ์๋กญ๊ฑฐ๋ ๋ฉ์ง ๊ฒ์ด ์๋๋๋ค. ์ด๊ฒ์ด ์๋ ์์ฑ์์๊ฒ ์๋ ค์ง์ง ์์๋ค๋ ์ฌ์ค์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์๋ ๋ณ๋ช ์ด ๋์ด์๋ ์ ๋ฉ๋๋ค.
๋๋ ๋ํ virtualenv 15.1.0์ ์คํํ์ฌ ์ด๊ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ์ ๋ Nextflow ํ์ดํ๋ผ์ธ ๋ด์์ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ Nextflow๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฒฉ ๋ชจ๋(https://github.com/nextflow-io/nextflow/issues/302)๋ก ์คํ๋ฉ๋๋ค. Nextflow๋ ์๊ฒฉ ๋ชจ๋ ์์ด ์คํ๋๋๋ก ์ฌ๊ตฌ์ฑํ ์ ์์ง๋ง ๊ฐ๋ฅํ๋ฉด ๋ฐ์ธ๋ฉ๋์ง ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๋ Nextflow ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
activate
์คํฌ๋ฆฝํธ๊ฐ ์ด๋ป๊ฒ ์์ฑ๋๋์ง ์ ํํ ๋ชจ๋ฅด์ง๋ง activate.sh ์์ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ ์์ ์ฌํญ์ 57, 59 ๋ฐ 61 ํ์์ $PS1
๋ฅผ ๋ค์์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ๋งํผ ๊ฐ๋จํ ์ ์์ต๋๋ค. ${PS1-}
. (์ด ๊ตฌ๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ PS1
๊ฐ์ ์ฌ์ฉํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋น ๋ฌธ์์ด์ ์ฌ์ฉํฉ๋๋ค. PS1
์ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. Documentation ). ์ ์ด๋ ๋ด ํ๊ฒฝ์์ ์ด๋ ๊ฒ ์์ฑ๋ activate
์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ฌ๋ผ์ง๋๋ค.
bash ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๋ฐ ๋ช ๋
์ด ๊ฑธ๋ฆด์ง ๊ถ๊ธํฉ๋๋ค. virtualenv์ ๋ฐ์ธ๋ฉ๋์ง ์์ ๋ณ์ ๋ฒ๊ทธ๋ ์์ฃผ ์ค๋๋์๊ณ ์์ ํ๊ธฐ ์ฝ๊ณ ๋์ค์ ๊ฐ๋จํ ํ ์ค๋ง ์ถ๊ฐํ๋ฉด ํผํ ์ ์์ต๋๋ค. ๊ฐ์ ํ
์คํธ: set -euox pipefail
.
์ผ๋ฐ์ ์ผ๋ก debian, ubuntu, centos, rhel, fedora ๋ฑ์ ํจํค์ง๋์ด ์์ผ๋ฏ๋ก ์์ ์ฌํญ์ด ์ฃผ๋ณ์ ๋ชจ๋ virtualenv ๋ฐฐํฌํ์ ๋๋ฌํ๋ ๋ฐ ๋ช ๋ ์ด ๊ฑธ๋ฆด์ง๋ ๋งํ ๊ฒ๋ ์์ต๋๋ค. :( :( :(
ํ๋ก์ ํธ ๊ด๋ฆฌ์๊ฐ ์ด ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค๋ ์ฌ์ค์ ์ธ์ ํ ๊ฒ์ ๋๊น?
์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ฑฐ์ 2์ฃผ ๋ PR๋ ๋ฐ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋๋ต์ ์ ์ถํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋๋ irc, twitter, ์ฌ์ง์ด ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ ์ฝ๊ฐ์ ์์์ ๋ง๋ค๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ์์ ์ฌํญ์ ๋ณํฉํ ์ ์์ต๋๋ค.
virtualenv๋ CI ์์ ์์ bash ์๊ฒฉ ๋ชจ๋๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋ง๋ ์ ์ผํ ๊ฒ์ ๋๋ค.
+1
์คํฌ๋ฆฝํธ ์์ ๋ถ๋ถ์์ nounset
๋ฅผ ๋นํ์ฑํ
@jakub-bochenski ์๋ง๋ irc์ ๋ํ ๋ช ๊ฐ์ง ์๊ฒฌ์ ๋์์ ์ค ์๋ ์์ต๋๋ค. virtualenv core dev๋ฅผ ๊นจ์ฐ๊ธฐ์ ์ถฉ๋ถํ ์ฌ์ฉ์๋ฅผ ํ๋ณดํ ์ ์๋์ง ๋ด ์๋ค.
@ssbarnea ํ์คํ์ง ์์ต๋๋ค. ๋๋ ์ค๋ซ๋์ IRC์ ๋ก๊ทธ์ธํ์ง ์์์ต๋๋ค. ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ์ ์๋ฌธ์ด ๋๋๋ก ๋์ธ ์๋ ์์ง๋ง
ํ์จ์ ์ฌ๋ค...
+1
7์ผ ์ ์ pypa-dev์ ์ด๋ฉ์ผ์ ๋ณด๋์ง๋ง ์๋ต์ ๋ฐ์ง ๋ชปํ์ต๋๋ค. ๋ํ ์ด์ ๋๊ตฐ๊ฐ๊ฐ ์ค์น๋ win32 ๋ฐ์ด๋๋ฆฌ์ ํธ๋ก์ด ๋ชฉ๋ง๊ฐ ํฌํจ๋์ด ์๋ค๊ณ ๊ฒ์ํ์ง๋ง ๋ค์ ์๋ตํ์ง ์์์ต๋๋ค. ํธ๋ก์ด ๋ชฉ๋ง๊ฐ ์ค์ ๋ก ๋ฐฐํฌํ์ ํฌํจ๋์ง ์์์ผ๋ฉด ํ๊ณ ๊ทธ๊ฒ์ด ๋์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
https://groups.google.com/forum/#!forum/pypa -dev ์ฐธ์กฐ
์ค๋ ์ด๊ฒ์ ๋ถ๋ช์ณค๊ณ ์ด๋๊ฐ์ ๋ด ์ฝ๋์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
:+1: ๋จ์ ํ
์คํธ์ set -euo pipefail
๋ฅผ ํฌํจํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์์์ ์ธ๊ธํ ํ ๋ก ์ ๋ํ ์ง์ ๋งํฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://groups.google.com/d/topic/pypa-dev/8iVHDOqsj9M/discussion
@pfmoore๊ฐ ์ผ๋ค
๋๋ ์ด๋ฏธ virtualenv-users ๋ชฉ๋ก์ ๋ํด ํจ์ฌ ๋ ์์ธํ ์๋ตํ์ต๋๋ค.
.. python-virtualenv ๋ชฉ๋ก์ผ๋ก ํ๋ช ๋์์ต๋๋ค. https://groups.google.com/d/topic/python-virtualenv/5xKG8KoBl6g/discussion
FWIW, ๋ด๊ฐ .devkit ์์ ์ฌ์ฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ source
ํ์ VIRTUAL_ENV_DISABLE_PROMPT=true
์ค์ ํ๋ ๊ฒ์
๋๋ค. ํ๋กฌํํธ ์ค์ ๋์์ ๋ชจ๋ ๋นํ์ฑํํ๊ธฐ ๋๋ฌธ์ PS1
์ค์ ํ๋ ๊ฒ๋ณด๋ค ๋ด ์ฌ์ฉ ์ฌ๋ก์ ๋ ์ ์๋ํฉ๋๋ค.
@pjeby @jakub-bochenski @jpuskar @axd1967 ์ด๋ฏธ ์ด์ ๋ํ ๋ฒ๊ทธ ์์ ์ด ์์ง๋ง ๋ณํฉํ๋ ค๋ฉด ๋ ๊ฐ์ ๋ค๋ฅธ PR์ ๊ฒํ ํ๊ณ ๋ณํฉํด์ผ ํฉ๋๋ค. ์ด๋ ํ์ฑํ ํ ์คํธ๋ฅผ ๊ฐ์ ํ๊ณ ๊ฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ชจ์๊ณก.
์๋ง๋ ๋น์ ์ ๋ง์ง๋ง ๋ ๊ฐ์ง๊ฐ CI ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๊ณ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๊ฒ๋ค์ ๋จผ์ ๋ณํฉํด์ผ ํฉ๋๋ค.
๊ฒํ /๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. virtualenv์๋ ๊ฒํ ๋ฅ๋ ฅ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ณด๋ค ๋ ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ https://groups.google.com/d/msg/pypa ์์ ๊ด๋ฆฌ์๊ฐ ๋๋ผ๊ณ ์์ฒญํ ์ด์ ์ค ํ๋์ ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ด ์์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
@ssbarnea ์ ํฌ์๊ฒ ๋ฆฌ๋ทฐ์ด ๊ถํ๋ ์์ฒญ
ํธ์ง: ๋ถ๋ช ํ ๋๊ตฌ๋ ์ง PR์ ๊ฒํ ํ ์ ์์ต๋๋ค.
1๊ฐ ์๋ฃ 2๊ฐ ๋ ๋จ์์ต๋๋ค :)
์ด๊ฒ์ด ๋ณํฉ๋๊ณ ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์๊ธฐ์ ๋ํด ETA๋ฅผ ์ป์ ์ ์์ต๋๊น?
ํธ์ง : ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์ค๋ ์์นจ์ ๋น๋๋ฅผ ์ค๋จํ์ต๋๋ค.
AWS ๋๋ค ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์๋ฃจ์ ์ ์ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ ๋๋ ์ด๊ฒ์ ๋ฌผ๋ ธ์ต๋๋ค. https://github.com/awslabs/serverless-image-handler/blob/master/deployment/build-s3 -dist.sh
VIRTUAL_ENV_DISABLE_PROMPT=true source env/bin/activate
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค.
@duaneking @robinbowes virtualenv ์ฃผ๋ณ์ ์ ์ง ๊ด๋ฆฌ ๋ฅ๋ ฅ์ด ๋ถ์กฑํ๋ฉฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ํ์ํ๋ฉด https://groups.google.com/forum/#!topic/pypa -dev/SgK9vlu93BY๋ฅผ ์ฝ๊ณ ์๊ฒฌ์ ๋ง
๋ด ์ธ์์ PYPA ํ์ด ์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ์ด ์ถฉ๋ถํ ๊ฒฝ์ฐ์๋ง ์ด์ ๋์ํ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋๋ค.
FTR ์ฐ๋ฆฌ๋ ์ฌ์ ํ #1087์์ ๋ณํฉ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
๋น๊ณต์ Bash ์๊ฒฉ ๋ชจ๋ ์ฌ์ฉ ์ ์ฒซ ๋ฒ์งธ ์๊ฐ ๋ฌด์์ธ์ง ๋ง์ถฐ๋ณด์ธ์ ๋ถ์ ํฉ ๋ฌธ์ ์์ฑ ?
์, python 2 virtualenv์ ๋๋ค.
์ฐ๋ถํฌ 16.04
bogdando/ tripleo-ci@318d17a๋ฅผ ์ฌ์ฉ ํ๋ฉด ์ด์ ์ ํ์ฑํ๋์ง ์์๋๋ผ๋ ๋ชจ๋๋ฅผ -u
์ฌ์ ์ํฉ๋๋ค. ์ ํํ๋ ๋ชจ๋ฒ ์ฌ๋ก ๊ตฌ์ฑ์ด ์๋๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด์ ์ํ๊ฐ ์ ์ง๋ฉ๋๋ค.
old_setting=${-//[^u]/}
...
if [[ -n "$old_setting" ]]; then set -u; fi
์ง๊ธ์ ํจ์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค(bash๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ์์ ๋ฐ๋ผ ๋ณ๊ฒฝ).
์์ฑ์๊ฐ ๋ง์นจ๋ด ์ด ์์ ์ฌํญ์ ๊ฒ์ํ๋ฉด ์คํจ(์คํ ์ค๋จ)๊ฐ ์์๋์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ช
ํํ๊ฒ ํ์๋ฉ๋๋ค.
set +H -euo pipefail
pushd "${envdir}"
patch -p0 <<< '
--- bin/activate 2018-10-12 09:08:16.991113929 +0200
+++ bin/activate 2018-10-12 09:27:51.505054528 +0200
@@ -54,11 +54,11 @@
fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
- _OLD_VIRTUAL_PS1="$PS1"
+ _OLD_VIRTUAL_PS1="${PS1:-}"
if [ "x" != x ] ; then
PS1="$PS1"
else
- PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
+ PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1:-}"
fi
export PS1
fi
'
popd
. "${envdir}/bin/activate"
์ง๊ธ ์์ ๋์์ต๋๋ค https://github.com/pypa/virtualenv/pull/922
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
AWS ๋๋ค ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์๋ฃจ์ ์ ์ํ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ ๋๋ ์ด๊ฒ์ ๋ฌผ๋ ธ์ต๋๋ค. https://github.com/awslabs/serverless-image-handler/blob/master/deployment/build-s3 -dist.sh
VIRTUAL_ENV_DISABLE_PROMPT=true source env/bin/activate
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค.