--relocatable νλκ·Έλ₯Ό μ¬μ©νμ΅λλ€. μ λ¦΄λ¦¬μ€ 20.0μλμ΄ νλκ·Έκ° μμ΅λλ€. μ΄μ μ¬λ°°μΉ κ°λ₯ν νκ²½μ μ΄λ»κ² μμ±ν©λκΉ?
μ¬λ°°μΉ κ°λ₯ νλκ·Έλ νμ μ€νμ μ΄λ©° μ€μ λ‘ μλνμ§ μμμ΅λλ€. λ μ΄μ μ§μνμ§ μμΌλ©° κΈ°λ₯μ΄ μμ ν μμ λμμ΅λλ€ (λ°λΌμ μ£Όμ 릴리μ€). μ¬μ© μ¬λ‘λ₯Ό μ€λͺ νλ©΄ λ€λ₯Έ μ κ·Ό λ°©μμ μ μ ν μ μμ΅λλ€.
CMD export branch && cd /build_dir && \
apt-get update -y && apt-get upgrade -y && \
pip3 install virtualenv && \
virtualenv --always-copy --python=python3 env && \
git clone http://user:pass@gitlab/dev/repo.git && \
cd /build_dir/veil-repo/code/veil-common && \
git checkout $branch && \
python3 install.py -p /build_dir/veil-repo/code/cli-app/ -v /build_dir/env && \
python3 install.py -p /build_dir/veil-repo/code/controller/ -v /build_dir/env && \
python3 install.py -p /build_dir/veil-repo/code/node/ -v /build_dir/env && \
cd /build_dir/ && \
./env/bin/pip3 install -r requirements.txt && \
virtualenv --relocatable env
μ΄κ²μ Dockerfileμμ λ°μ· ν κ²μ λλ€. --relocatable νλκ·Έλ₯Ό μ κ±°νλ©΄ μ½λκ° μ¬λ°λ₯΄κ² μλν©λκΉ? μ¦, μ΄λ€ μ μΌλ‘λ λ³΅μ¬ ν μμλ λλ§μ 격리 λ νκ²½μ λ§λ€μ΄μΌν©λλ€.
λ컀 λ΄λΆμμλ 90 %λΌκ³ λ§ν μ μμ΅λλ€. κ·Έλ¬λ ν΄λΉ λ컀 μ½λλ₯Ό μ μ§ κ΄λ¦¬νλ μ¬λκ³Ό μ°λ½ν΄μΌνλμ§ νμΈνλ €λ©΄ μ¬λ°°μΉ κ°λ₯μ μ²λ¦¬νλ λ°©λ²μ λ―Έλ¬ν μ°¨μ΄κ°μμ μ μμ΅λλ€.
CI μμ€ν
μ΄ κΈ΄ μ΄λ¦μ κ°μ§ λλ ν 리μ virtualenvλ₯Ό μμ±νκΈ° λλ¬Έμμ΄ κΈ°λ₯μ κ°λ μ¬μ©νμ΅λλ€. μ΄λ¦μ #!
μ΄ λ무 κΈΈμ΄ νκ²½μμ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μμ μ λλ‘ κΈΈμ΄μ§λλ€.
@ Nitori- μ΄λ¬ν κ²½μ° μΌλ°μ μΌλ‘ λꡬλ₯Ό νΈμΆνλ python -m
νμμ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€ π€
곡μ ν΄. λ§μ Python ν¨ν€μ§κ° μ λλ‘ μλνμ§ μκ³ μ체μ μΌλ‘ νΈμΆλλ κ²μ νμ©νμ§ μμ§λ§.
@ Nitori-μ΄ κ²½μ°μλ λ°μ΄λ리 ν΄λ λ΄μ νμ΄μ¬ μΈν°ν리ν°λ₯Ό ν΅ν΄ μ€ν νμΌμ νΈμΆνμ¬ νμ κ°μ λ‘ νΈμΆ ν μ μμ΅λλ€. μ
{venv}/bin/python {venv}/bin/bad-bad-tool
{venv}
λ μμλ‘ κΈΈ μ μμ΅λλ€ π
μ°λ¦¬ νμ¬μμλ νμ΄ν λΌμΈμμ --relocatable
νλκ·Έλ₯Ό μ¬μ©νμ¬ virtualenvλ₯Ό μ¬μ¬μ©νκ³ μκ°μ μ μ½ν©λλ€. GitLabμ μ¬μ©νκ³ , μ΄κΈ° λ¨κ³μμ virtualenvλ₯Ό λΉλνκ³ , μν°ν©νΈλ‘ μ μ₯ ν λ€μ μ¬μ¬μ©νμ¬ λ³λ ¬ ν
μ€νΈμ 무리.
μ°λ¦¬λ virtualenv λ²μ μ κ³ μ νλ €κ³ νμ§λ§ λ²κ·Έλ‘ μΈν΄ μ΅μ λ²μ μ κ°μ Έ μμ μ€λ μμΉ¨ νμ΄ν λΌμΈμ΄ μ€λ¨λμμ΅λλ€. λ²κ·Έλ₯Ό μμ νμ¬ κ³ μ λκ³ λͺ¨λ κ²μ΄ μ§κΈ μ€νλκ³ μμΌλ©° νλκ·Έκ° μ κ±°λλ λ°©λ²μ μ°Ύμ μ μμ΅λλ€. κ·Έλ¬λ λ¬Έμ κ° μ’ κ²° λμμμλ λΆκ΅¬νκ³ λ΄ κ²½νμ μ λ¬νκΈ° μν΄ μ¬κΈ°μμ μ£Όλͺ©ν κ²μ΄λΌκ³ μκ°νμΌλ©° μμΌλ‘ κΉλ°μ΄ μ§μ λ κ²μΌλ‘ κΈ°λνμ§ μμ΅λλ€.
μλ‘μ΄ μ± λ°μ΄ν° μλμμ virtualenvλ₯Ό μμ±νλ λ° 100ms λ―Έλ§μ΄ 걸리λ―λ‘μ΄ μ κ·Ό λ°©μμ΄ μ¬μ© μ¬λ‘μμ μ νΈλ©λλ€.
rpmμμ venvλ₯Ό λ²λ€λ§νκΈ° μν΄ --relocatable
λ₯Ό μ¬μ©ν©λλ€. virtualenvλ $ DESTDIRμμ μμ±λκ³ λ§μ§λ§μΌλ‘ /opt/company
μμ μ΄λλ©λλ€.
μ κ²½μ°μ λλ€.
κ·Έλ¬λ©΄ μμ± λ κ²½λ‘μ λν μ΅μ’ λͺ©νλ₯Ό 미리 μ λ¬ν μμλ κ²μ΄ λμμ΄ λ κΉμ?
@gaborbernat μ!
@gaborbernat κ·Έλλ virtualenvλ μ΅μ’ μμΉμ λ°°ν¬νκΈ° μ μ λΉλ λ¨κ³μμ μ¬μ©ν μ μμ΄μΌν©λλ€.
μ¬κΈ°μμ μ’μ ν΄κ²°μ± μ΄ λ¬΄μμΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€ π€ μ λ μ μμ μ΄λ € μμ΅λλ€.
μ΄λ¬ν κ²½μ° @gaborbernat μμ νμ€ λμμ builddirκ³Ό prefixλ₯Ό ꡬλΆνλ κ²μ λλ€.
virtualenvμλμ΄ κ²½μ° μ€ν΄μ μμ§κ°μλ DEST_DIR
μΈμκ° μμ΅λλ€. DEST_DIR
λ μ€μ Venv μμΉλ‘, μ¬μ€μ μ λμ¬μ
λλ€ (/ usr, / usr / local λ±). λ°λΌμ virtualenv LOCATION
λ¬Έμννλ©΄μ΄ μ¬μ€μ΄ λ λͺ
νν΄μ§ κ²μ
λλ€.
κ·Έλ° λ€μ --destdir
λλ --root
μ΅μ
μ μΆκ° ν μ μμΌλ©° κΈ°λ³Έκ°μ /
μ
λλ€. μ΄λ° μμΌλ‘ virtualenvλ destdir
μμ λΆλ¦¬λμ΄ μλ ν μ μμ΅λλ€ (λ€μ chrootμ μ μ¬). python, pip λ° κΈ°ν μ€ν¬λ¦½νΈκ°μ΄ λ¬Έμ μ μ΄λ»κ² λμ²ν΄μΌνλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
AFAIK λ¬Έμ λ μμ± λ λͺ¨λ μ½μ μ€ν¬λ¦½νΈκ° shebang μμ± μ€μ κ²½λ‘λ₯Ό νλ μ½λ©νλ€λ κ²μ λλ€. shebangμ΄ ν¬ν¨ λ μμ± λ μ½μ μ€ν¬λ¦½νΈλ₯Ό λΉλνλ λμκ³Ό λ°°ν¬ ν μ€ννλ λμ λͺ¨λ μλνλλ‘ λ§λλ νμ€ λ°©λ²μ μμ΅λλ€. κ·Έκ²μ λΉλ ν λκ΅°κ°κ° shebangsλ₯Ό κ³ μΉμ§ μλ νμ λλ€. κ·Έλ¬λ κ·Έκ²μ μ΄μ κ°μ νκ²½ μμ±μ λ²μλ₯Ό λ²μ΄ λ¬μΌλ―λ‘ μ°λ¦¬κ° ν΅μ ν μ μμ΅λλ€.
@gaborbernat λΉμ μ μ°λ¦¬κ° μ΄κ²μ setuptoolsμμ ꡬνν΄μΌ ν¨μ μλ―Έν©λκΉ? λΉλ μκ°κ³Ό λ°νμμ λμ μμΉμμ λΆλ¦¬νμ¬ μ¬μ©ν μμλ shebangμ 무μμ λκΉ?
κΈ°μ‘΄ virtualenvμμ shebangsλ₯Ό νΈμ§νμ¬ μ μμΉμμ μ¬μ©ν μ μλλ‘νλ virtualenv-relocate
μ€ν¬λ¦½νΈλ₯Ό μμ±νλ €κ³ ν©λλ€. λ€μκ³Ό κ°μ κ² :
$ virtualenv-relocate /build/dir/venv /opt/company/app/venv
Rewriting shebang of bin/pip.
Rewriting shebang of bin/pip3.5.
...
$
λλ setuptoolsκ° μ΄κ²μλ μ’μ κ³³μ΄λΌκ³ μκ°νμ§ μμ΅λλ€. μμΉ Aμ λΉλ ν λ€μ μμΉ Bμ λ°°ν¬νλ λΉλ μμ€ν μ μΌλΆ μ¬μΌνλ κΈ°λ₯μ λλ€.
μ, C νλ‘μ νΈλ λ¨μν PATHμ LD_LIBRARY_PATHλ₯Ό νΈμ§νμ¬ λΆλ¦¬ λ λΉλλ₯Ό νμ©ν©λλ€. μ΄λ€ λΉλ μμ€ν μ μ¬μ©νλ μκ΄ μμ΅λλ€.
λλ Cκ° μ΄κ²μ λ¬μ±νλ λ°©λ²μ μ΅μνμ§ μμ΅λλ€. λκ΅°κ°κ° μ€λͺ νκ³ μ°κ²°ν μ μμ΅λκΉ? μ΄μ μ λ¬΄μ¨ μΌμ΄ μμλμ§ https://github.com/pypa/virtualenv/blob/legacy/virtualenv.py#L1880 -L1894; μ°λ¦¬λ κΈ°λ³Έμ μΌλ‘ μ€ν¬λ¦½νΈμ pth / egg νμΌκ³Ό κ°μ μλμ μΈ κ²½λ‘λ₯Ό λ§λ€λ €κ³ λ Έλ ₯ν΄ μμ΅λλ€.
λ΄ μ μ₯μλ --relocatableμ μ¬μ©νκ³ μμΌλ©° μ¬λ°°μΉ κ°λ₯ν κ°μ νκ²½μ΄ μμ± λ ν μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ μΆκ° λΌμ΄λΈλ¬λ¦¬λ₯Ό virtualenvμ 볡μ¬ν©λλ€. μ΄λ₯Ό ν΅ν΄ μμ ν μ¬λ°°μΉ κ°λ₯ν virtualenvλ₯Ό μμ± ν μμμμ΅λλ€. μλ₯Ό λ€μ΄ μ°λ¦¬λ μ΄κ²μ Windowsμμ μ¬μ©νκ³ μ€μΉ νλ‘κ·Έλ¨μ virtualenvλ₯Ό μΆκ°ν©λλ€. μ€μΉ ν python3 νλ‘κ·Έλ¨μ ν¨ν€μ§ λ virtualenvμμ μ μλν©λλ€.
λμΌν μ¬μ© μ¬λ‘λ Macκ³Ό Linuxμμλ μλν©λλ€ ....
@ Gagi2k κ±°κΈ°μμνλ μΌμ μ΄λ―Έ νμ¬ μ¬λ°°μΉ κ°λ₯ν ꡬνμ μ·¨μ½μ±μ 보μ¬μ£Όμμ΅λλ€. envλ₯Ό μμ ν μ¬λ°°μΉ ν μ μλλ‘ λ§λ ν λͺ κ°μ§ μΆκ° μ€ν¬λ¦½νΈλ₯Ό μνν΄μΌνμ΅λλ€. λ¬Έμ λ ν¨ν€μ§λ₯Ό μμ ν μ¬λ°°μΉ κ°λ₯νκ² λ§λλ λ°©λ²μ΄ λμ νκ²½μ ν¬κ² μμ‘΄νλ€λ κ²μ λλ€. λ°λΌμ μ¬κΈ°μ μμ΄λμ΄λ virtualenv μμ²΄κ° νκ²½μ μμ ν μ¬λ°°μΉ ν μ μλλ‘νλ κ²μ ν¬κΈ°νκ³ (λ§μ κ²½μ°μμ μ±κ³΅ν μ μκΈ° λλ¬Έμ) ... λμ μ΄ μ¬μ©μ μ§μ μ€ν¬λ¦½νΈλ₯Ό μμ±νλ μ¬λλ€μκ² μμ μ μμνμ¬μ΄λ₯Ό λ¬μ±νλ κ²μ λλ€. λμ νκ²½μ λν μ§μμ΄μλ μ€ν¬λ¦½νΈμ΄λ―λ‘ μ¬λ°°μΉ κ°λ₯νκ² λ§λλ λ° νμν μ¬νκ³Ό λ³κ²½ μ¬νμ μ νν μκ³ μμ΄μΌν©λλ€.
μ¬μ€, 곡μ ν μμ .
λ΄ λ¬Έμ λ μ΄μ μ μ 곡 ν κΈ°λ₯μ λ€μ λ§λ€κ³ λͺ¨λ νλ«νΌ + μ¬λ¬ λ°°ν¬νμμ ν μ€νΈνμ¬ μ΄μ κΈ°λ₯κ³Ό λκ°μ μμ μ μνν΄μΌνλ€λ κ²μ λλ€.
λλ λ λλ λ€λ₯Έ λκ΅°κ°κ° μ΄κ²μ ꡬνν μκ°μ κ°μ§ λκΉμ§ μ§κΈμ μ΄μ virtualenv λ²μ μ κ³ μνλ €κ³ λ Έλ ₯ν κ²μ΄λΌκ³ μκ°ν©λλ€.
@ Gagi2k virtualenv-relocate
νλ‘μ νΈ μμ΄λμ΄μ λν μμ μ견μ μ°Έμ‘°νμμμ€. λ€λ₯Έ μ¬λκ³Ό νλ ₯νκ²λμ΄ κΈ°μ©λλ€. https://github.com/spotify/dh-virtualenv/ κ° μ’μ μΆλ°μ μ΄ λ μ μμ΅λλ€.
@bersace thx, λλ μ΄λ―Έ μ΄μ μ½λλ₯Ό 볡μ¬νμ¬ λ 립ν νμ΄μ¬ μ€ν¬λ¦½νΈλ₯Ό λ§λ€μμ΅λλ€. μ§κΈμ λλ‘ μΈ μ루μ μΌλ‘ μ¬μ©ν κ² κ°μ§λ§ λμ€μ λ€λ₯Έ κ²μΌλ‘ μ ννκ±°λ λ΄κ° κ°μ§κ³ μλ μ€ν¬λ¦½νΈλ₯Ό μ 곡νκ²λμ΄ κΈ°μ©λλ€.
@ Gagi2k 곡μ νμκ² μ΅λκΉ?
@bersace μμ§ μ§ν μ€μ λλ€ : https://codereview.qt-project.org/c/qt/qtivi/+/290859
μ 체 virtualenv 20 μ
λ°μ΄νΈλ‘ μΈν΄ μμλ³΄λ€ ν¨μ¬ λ§μ λ¬Έμ κ° λ°μν©λλ€. μ€ν¬λ¦½νΈλ₯Ό μ¬λ°°μΉ ν μ μλλ‘ μ΄μ κΈ°λ₯μ μ¬μ¬μ©νλ κ²μ ν° λ¬Έμ κ° μλμ§λ§ μ΄μ venvλ₯Ό κΈ°λ°μΌλ‘νκ³ pyvenv.cfgλ₯Ό μ¬μ©νλ©΄ ν¨μ¬ λ 볡μ‘ν΄μ§λλ€. μλ₯Ό λ€μ΄ Windowsμμ μ€λλ virtualenvλ λ§μ κΈ°λ³Έ py νμΌμ
μ§κΈμ pyvenv.cfgκ° μ§μνμ§ μκ³ λ ν μ μλ€κ³ μκ°νμ§ μμ΅λλ€.
@gaborbernat λλ κ·Έκ²μ΄ μλ μλ νλλ‘ virtualenvλ₯Ό μ€μ©νκ³ μμ μ μμ§λ§, μ¬λλ€μ΄ pipλ₯Ό μ¬μ©νμ¬ νμ₯ ν μ μλλ‘ νμ©νκ³ μΆμ λ μμ μ python3 μ¬λ³Έμ μ ν리μΌμ΄μ μ μ 곡νλ 곡μμ μΈ λ°©λ²μ 무μμ λκΉ?
@ Gagi2k λλ μ¬κΈ°μ λκ°λ₯Ό λμΉκ³ μλ€κ³ νμ ν©λλ€. νμ§λ§ μ£Όμ΄μ§ μμ€ν
μμ μ€μΉ λ¨κ³μ μΌλΆλ‘ pyenv.cfg
hone
λ§ λ³κ²½ν μλ μμ΅λκΉ?
@gaborbernat λλ κ·Έκ²μ΄ μλ μλ νλλ‘ virtualenvλ₯Ό μ€μ©νκ³ μμ μ μμ§λ§, μ¬λλ€μ΄ pipλ₯Ό μ¬μ©νμ¬ νμ₯ ν μ μλλ‘ νμ©νκ³ μΆμ λ μμ μ python3 μ¬λ³Έμ μ ν리μΌμ΄μ μ μ 곡νλ 곡μμ μΈ λ°©λ²μ 무μμ λκΉ?
κ°μ νκ²½μ νμ μ»΄ν¨ν°μ μΌλΆ νμ΄μ¬ μΈν°ν리ν°μ λν μ°Έμ‘°κ°λλλ‘ μ€κ³λμμ΅λλ€. κΈ°λ³Έ κ°μ μ μ»΄ν¨ν°μ μμ ν μλνλ Python νκ²½μ΄ μκ³ λ³λμ site-packages
μ¬λ¬ κ°λ₯Ό μνλ€λ κ²μ
λλ€. λ§ν¬λ₯Ό μμ ν λͺ
μ μ μ΄ μ§ μκ² λ§λλ λ° μΌλΆ κ°μΉκ° μμμ μ μ μμ§λ§ (νμ¬ μμ ν λͺ
μμ μΈ κ²½λ‘μ λ§μ°¬κ°μ§λ‘) κ·Έ κ²½λ‘ λ₯Ό λ°λΌκ°λ κ²½μ°μλ λκΉμ§ κ°μ pex λ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό ν¨ν€μ§νμ§ λ§μμμ€. μ°Έμ‘°λ₯Ό μ½κ² κΉ¨λ¨λ¦¬μ§ μκ³ νμ΄μ¬ μ€ν νμΌμ 미리?
@gaborbernat λ¬Όλ‘ μλν©λλ€. κ°μ₯ ν° λ¬Έμ λ λλΆλΆμ μ¬μ©μκ° μ€μΉ ν ν΄λ μ΄λ¦μ λ°κΏ μ μμΌλ©° κ³μ μλνλ€λ κ²μ
λλ€.
νμ§λ§ λ°©κΈ PYTHONHOME μ€μ μ΄ νΈλ¦μ μννλ€λ κ²μ μμμ΅λλ€. μ΅μν μλ μ€μΉλ₯Ό μ°Έμ‘°νμ§ μκ³ μλνλ Windowsμμ.
pexλ ν₯λ―Έλ‘μ 보μ΄λ©° ννΈλ₯Ό μν΄ λ μμΈν μ΄ν΄λ³Ό κ²μ λλ€.
@gaborbernat μ¬μ ν,
@gaborbernat λ¬Όλ‘ μλν©λλ€. κ°μ₯ ν° λ¬Έμ λ λλΆλΆμ μ¬μ©μκ° μ€μΉ ν ν΄λ μ΄λ¦μ λ°κΏ μ μμΌλ©° κ³μ μλνλ€λ κ²μ λλ€.
μ κ·Έλ€μ΄ μ΄κ²μ κΈ°λνλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. μ΄κ²μ κ²°μ½ μ¬μ€μ΄ μλλλ€. μ¬λ°°μΉ κ°λ₯ νλκ·Έλ₯Ό μ¬μ©νλλΌλ κ°λ₯ν κ²½μ°μ νμ μ§ν©μμ μ¬μ€μ΄μμ΅λλ€. λ°λΌμ v20μΌλ‘ λλΌκ° λ μ΄μ μ λλ€.
@gaborbernat μ¬μ ν,
@bersace μ΄κ²μ λ§μ μ¬μ© μ¬λ‘μ λ°λΌ λ€λ¦ λλ€. deb / rpmμ Pythonμ΄ λμ λ¨Έμ μ λμΌν μμΉμμ μ¬μ© κ°λ₯νλ€λ κ²μ 보μ₯ν©λκΉ? κ·Έλ λ€λ©΄ μ€μΉ μ€μ shebang κ²½λ‘λ₯Ό μμ νμμμ€ π
μμ€ν νμ΄μ¬μ λ°λΌ @gaborbernat λ νμ΄μ¬μ΄ νΉμ μμΉμ μλμ§ νμΈνκΈ°μ μΆ©λΆν©λλ€.
postinstμ μ€μΉλ νμΌμ μμ νλ κ²μ λ§€μ° λμ μκ°μ λλ€. μ΄λ κ²νλ €λ©΄ dpkg μμμμ λͺ¨λ μ€ν¬λ¦½νΈλ₯Ό μ μΈν΄μΌνλ―λ‘ dpkgλ μ κ·Έλ μ΄λμ ν΄λΉ μ€ν¬λ¦½νΈλ₯Ό 건λλ¦¬μ§ μμ΅λλ€. 그건 μ©λ©λμ§ μμ΅λλ€.
AFIAK, μ΅μμ μ루μ
μ μ΅μ’
ν¨ν€μ§λ₯Ό 보κ΄νκΈ° μ μ μ€νλ destdir
λ₯Ό μ κ±°νκΈ° μν΄ λͺ¨λ shebangsλ₯Ό νΈμ§νλ virtualenv-change-prefix
μ
λλ€.
@bersace μ
@gaborbernat λ μ λ λμ μμΉμ
λλ€. μ : #!/opt/company/app/venv/bin/python
.
μ΄μ /
μ΄μΈμ μ refrootμ ν΄λΉ ν¨ν€μ§λ₯Ό λ°°ν¬νλ κ²μ΄ μ§μλμ§ μμ΅λλ€.
@gaborbernat μ, μλμ μΌλ‘. dpkg / rpmμμ κ΄λ¦¬νλ νμΌμ μ¬μ©μκ° μ΄λν΄μλ μλ©λλ€.
μ΄κ²μ relocatable
λ€μ λ€λ¦
λλ€. λͺ©μ μ venvλ₯Ό relative λ‘ λ§λλ κ²μ΄ μλλΌ builddir (debian / build / ... λλ % builddir)κ³Ό rundir (/)μ ꡬλ³νλ κ²μ
λλ€.
μ°λ¦¬μͺ½μλ μ€ν κ°λ₯ν νλͺ©μ΄ μκΈ° λλ¬Έμ μ΄κ²μ λ«μ΅λλ€. μ¬κΈ°μμ κ³μ λ Όμνκ±°λ virtualenvμμμ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ μ μ¬μ μΈ νλ‘μ νΈμ λν΄ λ Όμνλ κ²μ΄ μ’μ΅λλ€.
μ¬μ€, λμμ λ²μ κ΄λ¦¬μμ΄ μ΄λ μ λ κ³΅κΈ μ 체 μ’ μμ±μ λν κ²μ λλ€.
νμμ κ²½μ°λ λΆμ° μ€νν¬ ν΄λ¬μ€ν° λ΄ νλ‘κ·Έλ¨μ μ€νμ μ§μνλ λ° νμν μ’
μμ± νμ΄μ¬ ν¨ν€μ§λ₯Ό μμΆνμ¬ μμ¬μ μ€νν¬μ 'μμΉ΄μ΄λΈ'λ‘ μ λ¬ν΄μΌν©λλ€. μ΄ μμ
μ Anacondaμμ μλ£ ν μ μμ§λ§ νμ¬μμλ μν°νλΌμ΄μ¦ μννΈμ¨μ΄λ₯Ό μ¬μ©ν μ μμ΅λλ€. relocatable
μ (λ) κ³Όκ±°μλμ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ§λ§ μ§κΈμ μ¬λΌμ‘μ΅λλ€.
μ κ²½μ°μλ νμν μ’ μμ±μ΄μλ Python ν¨ν€μ§λ₯Ό μμΆνκ³ λΆμ° Spark ν΄λ¬μ€ν°μμ μ€νλλ νλ‘κ·Έλ¨μ μ§μνκΈ° μν΄ Spark on Yarnμ 'μμΉ΄μ΄λΈ'λ‘ μ λ¬ν΄μΌν©λλ€. μ΄ μμ μ Anacondaμμ μλ£ ν μ μμ§λ§ νμ¬μμλ μν°νλΌμ΄μ¦ μννΈμ¨μ΄λ₯Ό μ¬μ©ν μ μμ΅λλ€.
relocatable
μ (λ) κ³Όκ±°μλμ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ§λ§ μ§κΈμ μ¬λΌμ‘μ΅λλ€.
@jackhhh λ , κΈ°μ‘΄ μ¬μ© μ¬λ‘μ λν ν΄κ²° λ°©λ²μ μ°Ύμμ΅λκΉ?
μ°λ¦¬λ κ°μ λ¬Έμ μ μ§λ©΄νκ³ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
rpmμμ venvλ₯Ό λ²λ€λ§νκΈ° μν΄
--relocatable
λ₯Ό μ¬μ©ν©λλ€. virtualenvλ $ DESTDIRμμ μμ±λκ³ λ§μ§λ§μΌλ‘/opt/company
μμ μ΄λλ©λλ€.