π ΠΠ°ΠΊ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Π² Linux: ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠ°ΠΊ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Π½Π° Linux
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Π½Π° Linux, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° "pyenv", ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Python:
- ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ pyenv, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ» .bashrc ΠΈΠ»ΠΈ .bash_profile (ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ):
- ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ source ~/.bashrc (ΠΈΠ»ΠΈ source ~/.bash_profile).
- Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
- ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pyenv global 3.8.12, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡ Π²Π΅ΡΡΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ.
$ curl https://pyenv.run | bash
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
$ pyenv install 3.8.12
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ "3.8.12" Π½Π° Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Python Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Π² Linux
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Linux ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python, Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π΄ΠΎΡΡΠΈΡΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ update-alternatives
Π£ΡΠΈΠ»ΠΈΡΠ° update-alternatives ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Linux. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Python, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΡΡ update-alternatives, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
sudo update-alternatives --config python
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ Python. - ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΡ Python, Π½Π°ΠΆΠ°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΈΡΡΡ.
- ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡ, Π½Π°ΠΆΠ°Π² Enter.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
sudo update-alternatives --config python
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ², Π²Π΅ΡΡΠΈΡ Python Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π°.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° pyenv
Pyenv - ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Python. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Python Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ pyenv, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pyenv, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°: https://github.com/pyenv/pyenv#installation.
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pyenv install
, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Python. - ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pyenv global <Π²Π΅ΡΡΠΈΡ>
, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ Python Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
pyenv install <Π²Π΅ΡΡΠΈΡ>
pyenv global <Π²Π΅ΡΡΠΈΡ>
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ², Π²ΡΠ±ΡΠ°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Python Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ pyenv-virtualenv
Π£ΡΠΈΠ»ΠΈΡΠ° pyenv-virtualenv ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ Python Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Python, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pyenv ΠΈ pyenv-virtualenv, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pyenv virtualenv <Π²Π΅ΡΡΠΈΡ> <ΠΈΠΌΡ_Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ_ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ>
, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Python. - ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pyenv activate <ΠΈΠΌΡ_Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ_ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ>
, ΡΡΠΎΠ±Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
pyenv virtualenv <Π²Π΅ΡΡΠΈΡ> <ΠΈΠΌΡ_Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ_ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ>
pyenv activate <ΠΈΠΌΡ_Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ_ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ>
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ², Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Python.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Python Π² Linux. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ update-alternatives Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Python Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pyenv Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ Python, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pyenv-virtualenv.
Π£Π΄Π°ΡΠΈ Π²Π°ΠΌ Π² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ !