Virtualenv: set -eu๋กœ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋กœ ์ธํ•ด activate๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Œ

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

์˜ค๋ž˜๋œ ๋ฒ„๊ทธ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 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์™€ ํ˜ธํ™˜ ๋˜๋ฉฐ ์ƒˆ๋กญ๊ฑฐ๋‚˜ ๋ฉ‹์ง„ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์›๋ž˜ ์ž‘์„ฑ์ž์—๊ฒŒ ์•Œ๋ ค์ง€์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€๋ช…์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

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

AWS ๋žŒ๋‹ค ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ์†”๋ฃจ์…˜์„ ์œ„ํ•œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์—…ํ•  ๋•Œ๋„ ์ด๊ฒƒ์— ๋ฌผ๋ ธ์Šต๋‹ˆ๋‹ค. https://github.com/awslabs/serverless-image-handler/blob/master/deployment/build-s3 -dist.sh

VIRTUAL_ENV_DISABLE_PROMPT=true source env/bin/activate ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋˜ํ•œ 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 ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@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์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™œ์„ฑํ™” ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ๊ฐœ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ชจ์Œ๊ณก.

  1. https://github.com/pypa/virtualenv/pull/1089 -- py36์—์„œ CI ํ…Œ์ŠคํŠธ ํ™œ์„ฑํ™” ๋ฐ py33 ์‚ญ์ œ
  2. https://github.com/pypa/virtualenv/pull/1087 -- CI์—์„œ test_activate.sh ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ํ™œ์„ฑํ™”
  3. https://github.com/pypa/virtualenv/pull/1078 -- ์–ธ๋ฐ”์šด๋“œ PS1 ์ˆ˜์ •์ด ํ™œ์„ฑํ™”๋จ

์•„๋งˆ๋„ ๋‹น์‹ ์€ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐ€์ง€๊ฐ€ 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

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