λ°νλ¬Ό
virtualenv 20.0.10μμ μ μ΄λ virtualenv νκ²½μ΄ μμ± λ λ pip μ£Ό λ²μ νμΌμ λͺ λͺ κ·μΉμ΄ λ³κ²½λμμ΅λλ€.
16.7.xμμ μμλ€ pip3.7
20.0.2μ΄κ° λ³κ²½ pip-3.7
μ¬μ ν μ‘΄μ¬νμ§λ§ pip3
μ‘°ν μ¬λ¬ νκ²½ λ° λΉλλ₯Ό μλν ν¨ν΄μ μΈ‘λ©΄μμ λͺ¨λ, pip${MAJOR_VERSION}
ν¨ν΄μ μ¬μ©νλ λΉλ μ’
μμ±μ΄ λ§μ΄μμ μ μμ΅λλ€.
μλ§λ μ΄μ λͺ λͺ κ·μΉμ μ€μνκΈ° μν΄ μ¬λ³Όλ¦ λ§ν¬λ₯Ό μΆκ°νλ©΄ λ§μ μ¬λλ€μ΄ λλ²κΉ μ λ§μ μκ°μ μλΉνμ§ λͺ»ν μ μμ΅λλ€.
νκ²½
pip list --format=columns
Package Version
------------------- -------
appdirs 1.4.3
asn1crypto 0.24.0
cffi 1.11.5
configobj 5.0.6
cryptography 2.3
dbus-python 1.2.4
decorator 4.2.1
distlib 0.3.0
filelock 3.0.12
gpg 1.10.0
idna 2.5
importlib-metadata 1.5.0
importlib-resources 1.3.1
iniparse 0.4
isc 2.0
netifaces 0.10.6
pciutils 2.3.6
perf 0.1
pip 9.0.3
ply 3.9
pycparser 2.14
pygobject 3.28.3
pyOpenSSL 18.0.0
pyparsing 2.1.10
python-dateutil 2.6.1
python-dmidecode 3.12.2
python-linux-procfs 0.6
pyudev 0.21.0
rhnlib 2.8.6
rpm 4.14.2
schedutils 0.6
selinux 2.9
sepolicy 1.1
setools 4.2.2
setuptools 39.2.0
six 1.11.0
slip 0.6.4
slip.dbus 0.6.4
syspurpose 1.25.17
zipp 3.1.0
λ³λ€
cd /opt
pip install virtualenv==20.0.10
pip list --format=columns | grep virtualenv
virtualenv 20.0.10
virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_20.0.10
ls -al /opt/venv_20.0.10/bin | grep pip
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip-3.7
pip uninstall virtualenv
pip install virtualenv==16.7.10
virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_16.7.10
ls -al /opt/venv_16.7.10/bin | grep pip
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip3.7
ls -al /opt/venv_20.0.10/bin
total 68
drwxr-xr-x. 2 root root 4096 Mar 15 14:08 .
drwxr-xr-x. 4 root root 4096 Mar 15 14:08 ..
-rw-r--r--. 1 root root 2206 Mar 15 14:08 activate
-rw-r--r--. 1 root root 1425 Mar 15 14:08 activate.csh
-rw-r--r--. 1 root root 3056 Mar 15 14:08 activate.fish
-rw-r--r--. 1 root root 1751 Mar 15 14:08 activate.ps1
-rw-r--r--. 1 root root 1199 Mar 15 14:08 activate_this.py
-rw-r--r--. 1 root root 1147 Mar 15 14:08 activate.xsh
-rwxr-xr-x. 1 root root 242 Mar 15 14:08 easy_install
-rwxr-xr-x. 1 root root 242 Mar 15 14:08 easy_install3
-rwxr-xr-x. 1 root root 242 Mar 15 14:08 easy_install-3.7
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root 233 Mar 15 14:08 pip-3.7
lrwxrwxrwx. 1 root root 51 Mar 15 14:08 python -> /opt/python_virtualenv/versions/3.7.6/bin/python3.7
lrwxrwxrwx. 1 root root 6 Mar 15 14:08 python3 -> python
lrwxrwxrwx. 1 root root 6 Mar 15 14:08 python3.7 -> python
-rwxr-xr-x. 1 root root 220 Mar 15 14:08 wheel
-rwxr-xr-x. 1 root root 220 Mar 15 14:08 wheel3
-rwxr-xr-x. 1 root root 220 Mar 15 14:08 wheel-3.7
ls -al /opt/venv_16.7.10/bin
total 15360
drwxr-xr-x. 2 root root 4096 Mar 15 14:10 .
drwxr-xr-x. 5 root root 4096 Mar 15 14:10 ..
-rw-r--r--. 1 root root 2206 Mar 15 14:10 activate
-rw-r--r--. 1 root root 1425 Mar 15 14:10 activate.csh
-rw-r--r--. 1 root root 3090 Mar 15 14:10 activate.fish
-rw-r--r--. 1 root root 1751 Mar 15 14:10 activate.ps1
-rw-r--r--. 1 root root 1517 Mar 15 14:10 activate_this.py
-rw-r--r--. 1 root root 1147 Mar 15 14:10 activate.xsh
-rwxr-xr-x. 1 root root 245 Mar 15 14:10 easy_install
-rwxr-xr-x. 1 root root 245 Mar 15 14:10 easy_install-3.7
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root 236 Mar 15 14:10 pip3.7
lrwxrwxrwx. 1 root root 9 Mar 15 14:10 python -> python3.7
lrwxrwxrwx. 1 root root 9 Mar 15 14:10 python3 -> python3.7
-rwxr-xr-x. 1 root root 15664944 Mar 15 14:10 python3.7
-rwxr-xr-x. 1 root root 2335 Mar 15 14:10 python-config
-rwxr-xr-x. 1 root root 223 Mar 15 14:10 wheel
μ΄κ²μ μ€ν¬λ¦½νΈ μμ±μ μ²λ¦¬νλ νμ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ±νν λΆμμ© μ λλ€. μ¬κΈ°μ μ€ν¬λ¦½νΈ λ³νμ΄ μΆκ°λμμ΅λλ€.
κ·Έλμ μ¬κΈ° pipλ λλ¨Έμ§μ λΉν΄ μ΄μν μΌμνλ κ² κ°μ΅λλ€. Linux λ°°ν¬νμ΄ μΌμ μ²λ¦¬νλ λ°©λ²κ³Ό νμ΄μ¬ μμ²΄κ° λ²μ μ μ²λ¦¬νλ λ°©λ²κ³Ό μΌμΉ ν μλ μμ΅λλ€.
pipx.y
νμμ νλ μ½λ©νλ κ² κ°μ΅λλ€. μ½μ μ€ν¬λ¦½νΈκ° λΉλμ μμ±λλ―λ‘ μ½κ° λ²μ΄λ©λλ€. λ°λΌμ λ²μ© ν μ κ²½μ° λ€λ₯Έ Pythonμ μ€μΉνλ κ²½μ° (μ : 3.8λ‘ λΉλ λ ν , 2.7μ μ€μΉ) pipλ λμ Python λ²μ μ λ§κ² λ²μ λ²νΈλ₯Ό λ€μ μμ±ν΄μΌν©λλ€. μ΄λ»κ² λ μ½μ μ€ν¬λ¦½νΈ 맀ν λ΄μ μ μ λ λ΄μ©μ μ‘΄μ€νμ§ μκ³ μ΄λ¦μ λ³κ²½ν©λλ€. νΉν pipx.y
νμλ μ¬μ©ν©λλ€.pip-x.y
νμμ μ νΈν©λλ€.pip-x.y
νμλ μ νΈν©λλ€. https://github.com/pypa/setuptools/blob/master/setup.py#L46 -L47 μ°Έμ‘°λκ΅¬κ° λ²μ μ΄ μ§μ λ μ€ν¬λ¦½νΈλ₯Ό μ μνλ λ°©λ²κ³Ό νλ°νΈ μλκ° μνλ λ°±μλμ ν΅μ ν μμλ λ°©λ²μ νμ€ννμ§ μμ κ² κ°μ΅λλ€. μλλ©΄ νλ‘ νΈ μλ μ΅μ μ΄μ΄μΌν©λκΉ? @pfmoore @pradyunsg μκ°μ μ΄λκ°μ PEP-517μ μΌλΆκ°λμ΄μΌνλ€κ³ μκ°ν©λλ€ π€·ββ
μ§κΈμ pipx.y
λ° pip-x.y
λ μμ±νλ κ²μ΄ ν΄κ²° λ°©λ²μ΄λΌκ³ μκ°ν©λλ€.
λκ΅¬κ° λ²μ μ΄ μ§μ λ μ€ν¬λ¦½νΈλ₯Ό μ μνλ λ°©λ²κ³Ό νλ°νΈ μλκ° μνλ λ°±μλμ ν΅μ ν μμλ λ°©λ²μ νμ€ννμ§ μμ κ² κ°μ΅λλ€.
μ΄κ²μ κΈ°λ³Έμ μΌλ‘ μν©μ λλ€.
Pipμ distlibμ μΌμΉνμ§ μλ λ²μ μ μμ±ν©λλ€. distlibλ‘ μ ννκΈ° μ μ pipκ° μ¬μ©νλ νμμ΄κ³ μ΄μ λ²μ κ³Όμ νΈνμ±μ΄ λ¬Έμ μκΈ° λλ¬Έμ λλ€ (IIRC).
μ₯κΈ°μ μΈ μ루μ
μ κ²½μ° μ΄λ μλ§λ νμ€νλμ΄μΌ ν κ²μ
λλ€ (μ€μ λ‘ μ 체 console-scripts
λ©μ»€λμ¦μ΄ νμ€νλμ§ μμμΌλ―λ‘μ΄ μμ μ 체λ₯Ό λ€λ£¨λ μλ‘μ΄ PEPκ° νμν κ²μ
λλ€).
μλ
νμΈμ,μ΄ λ¬Έμ μ λν μμ μ¬νμ virtualenv 20.0.11μ ν΅ν΄ 릴리μ€λμμ΅λλ€. https://pypi.org/project/virtualenv/20.0.11/(https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18)μ μ°Έμ‘° νμμμ€ . λ¬Έμ κ° ν΄κ²°λμ§ μμ κ²½μ° λ€μ μλνκ³ λ³΄κ³ νμμμ€. κ·Έλ μ§ μμ κ²½μ° μ¬κΈ°μ μ견μ λ¨κ²¨ μ£Όμλ©΄ ν°μΌμ λ€μ μ΄μ΄ λλ¦¬κ² μ΅λλ€. μ΄λ‘ μΈν΄ λΆνΈμ λΌμ³ λλ € μ£μ‘νλ©° μ΄λ² μλ‘μ΄ μ£Όμ 릴리μ€μμ μμμΉ λͺ»ν λ²κ·Έλ₯Ό ν΄κ²°νλ λμ κΈ°λ€λ € μ£Όμ
μ κ°μ¬ν©λλ€.