Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mari kita bincangkan tentang cara menukar versi Python sesuka hati

Mari kita bincangkan tentang cara menukar versi Python sesuka hati

WBOY
WBOYke hadapan
2023-04-13 18:58:071457semak imbas

Kata Pengantar

Saya tidak tahu sama ada anda pernah menghadapi situasi sedemikian dalam kerja pembangunan harian anda:

  • Projek A dibangunkan menggunakan versi Python 2.7 (mungkin disebabkan oleh sejarah legasi Masalahnya belum dinaik taraf kepada versi yang lebih baharu)
  • Projek B dibangunkan dengan Python versi 3.10.4, dengan mengandaikan bahawa versi requests==2.25.1 telah digunakan
  • Projek C telah dibangunkan dengan Python versi 3.10.4 Ya, dengan mengandaikan bahawa permintaan==2.27.1 versi digunakan

Pertama sekali, soalan pertama: masalah versi Python Terdapat perbezaan besar antara Python 2 .x dan Python 3.x, dan terdapat banyak versi Tidak mudah untuk diurus.

Soalan kedua: Mungkin versi permintaan tidak akan memberi sebarang kesan dalam projek B dan projek C. Tetapi menggunakan versi berbeza pakej yang sama dalam beberapa projek lain boleh memberi impak yang besar. Kemudian anda perlu membezakan versi pada masa ini, jadi versi Python yang sama perlu menggunakan dua versi pakej Jelas sekali pengurusan pakej adalah masalah dalam senario ini. Ia adalah sangat penting untuk memastikan bahawa persekitaran pakej yang berbeza tidak mengganggu satu sama lain semasa pembangunan projek harian Ia adalah perlu dan keperluan asas. Kemudian cara terbaik ialah dua persekitaran maya.

Jadi adakah penyelesaian muktamad yang boleh menguruskan versi penterjemah yang berbeza sambil turut menyediakan fungsi untuk mengawal versi pakej yang berbeza Sudah tentu ada, ia adalah pyenv?

1. Apakah pyenv?

Pyenv ialah alat pengurusan persekitaran Python yang dicabang daripada komuniti ruby ​​​​Ia boleh menukar versi penterjemah Python global dengan mudah, dan ia boleh digabungkan dengan virtualenv untuk pengurusan yang mudah. Selepas memasang pyenv, ia akan menambah pembolehubah persekitaran pada $PATH anda, seperti berikut:

❯ echo $PATH
/Users/allenjol/.pyenv/plugins/pyenv-virtualenv/shims:/Users/allenjol/.pyenv/shims:/usr/local/bin:/usr/local/sbin

Jadi, pyenv sebenarnya mengawal pembolehubah persekitaran PATH anda untuk menukar versi Python. Ia melaksanakan kawalan versi pada Python dengan memasukkan laluan shims pada permulaan laluan PATH.

2. Hubungan dan perbezaan antara pyenv, virtualenv dan pipenv

Seperti yang dinyatakan sebelum ini, pyenv mengawal versi Python, virtualenv ialah alat pengurusan persekitaran maya yang agak matang untuk Python, dan pipenv ialah pakej requrests Alat yang ditulis oleh Kenneth Reitz sebagai alat pengurusan pakej untuk Python, ia juga boleh menjana persekitaran maya. Artikel ini tidak akan membincangkan alat ini buat masa ini, tetapi akan memperkenalkannya dalam artikel yang akan datang.

pyenv memfokuskan pada pengurusan versi penterjemah Python Anda boleh menukar versi Python anda sesuka hati dan tidak perlu menentukan direktori persekitaran maya tertentu.

3. Persekitaran maya pyenv

Pasang pyenv di bawah CentOS7

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

Pasang pyenv di bawah MacOS

brew update
brew install pyenv

Jika anda mempunyai sebab rangkaian di bawah MacOS Terdapat dua penyelesaian untuk gagal menggunakan brew dengan baik:

  • Tukar sumber
  • Rujuk https://sre.ayunw.cn/posts/terminal_configure_proxy_with_clash/ Kaedah artikel ini Tetapan proksi

Tetapkan pembolehubah persekitaran

# bash下设置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

source ~/.bashrc

# zsh下设置环境变量(我是iterm2+zsh)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

source ~/.zshrc

Lihat versi pyenv

pyenv --version

4. Cara menggunakan baris arahan

# 查看当前版本
pyenv version
# 查看所有版本
pyenv versions
# 查看有哪些版本可供安装
pyenv install --list
# 安装python 3.10.4版本
pyenv install 3.10.4
# 安装一个版本后rehash一下,让pyenv知道管理的Python版本信息
pyenv rehash

# 卸载
pyenv uninstall 3.10.4
# 查看所有版本
❯ pyenv versions
system
* 3.10.4 (set by /Users/allenjol/.pyenv/version)

# 切换全局的Python版本,表示切换为系统的Python版本
pyenv global system
# 表示切换为pyenv的3.10.4版本
pyenv global 3.10.4

5. Pyenv-virtualenv pemalam pengurusan pakej

Pasang pyenv-virtualenv

Pemasangan di bawah Linux

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
 
# 配置环境变量
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile

Pemasangan di bawah MacOS

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

# MacOS的zsh
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
exec "$SHELL"

# 方法二
brew install pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
exec "$SHELL"

Gunakan pyenv -virtualenv

# 创建venv环境
pyenv virtualenv venv3.10.4
# 激活venv
pyenv activate venv3.10.4
pyenv version

# 退出venv环境
pyenv deactivate venv3.10.4

# 删除虚拟环境
pyenv uninstall venv3.10.4

Apabila anda menukar persekitaran maya Python, pip anda dan pakej dalam persekitaran maya anda ditukar kepada persekitaran sasaran anda. Ia tiada kaitan dengan persekitaran asal. Jadi dengan cara ini ia mendapat pengasingan versi yang baik bagi persekitaran dan pakej penterjemah python.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menukar versi Python sesuka hati. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam