Pyenv ช่วยให้คุณสลับระหว่าง Python หลายรุ่นได้อย่างง่ายดาย มันง่ายไม่สร้างความรำคาญและเป็นไปตามประเพณี UNIX ของเครื่องมืออเนกประสงค์เดียวที่ทำสิ่งหนึ่งได้ดี
โครงการนี้ถูกแยกจาก RBENV และ Ruby-Build และแก้ไขสำหรับ Python
PATH
ของคุณตัวเลือก Homebrew จากส่วน MacOS ด้านล่างจะใช้งานได้หากคุณติดตั้ง Homebrew
curl https://pyenv.run | bash
สำหรับรายละเอียดเพิ่มเติมเยี่ยมชมโครงการอื่น ๆ ของเรา: https://github.com/pyenv/pyenv-installer
สิ่งนี้จะช่วยให้คุณไปกับ Pyenv เวอร์ชันล่าสุดและทำให้ง่ายต่อการแยกและสนับสนุนการเปลี่ยนแปลงใด ๆ กลับมาต้นน้ำ
$HOME/.pyenv
(แต่คุณสามารถติดตั้งได้ที่อื่น): git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd ~/.pyenv && src/configure && make -C src
ตัวเลือกจากส่วน Linux ด้านบนยังใช้งานได้ แต่แนะนำให้ใช้ Homebrew สำหรับการใช้งานขั้นพื้นฐาน
อัปเดต Homebrew และติดตั้ง Pyenv:
brew update
brew install pyenv
หากคุณต้องการติดตั้ง (และอัปเดต) หัวหน้าการพัฒนาล่าสุดของ Pyenv แทนที่จะเป็นรุ่นล่าสุดแทนที่จะเรียกใช้:
brew install pyenv --head
จากนั้นทำตามขั้นตอนการโพสต์การติดตั้งที่เหลือเริ่มต้นด้วยการตั้งค่าสภาพแวดล้อมเชลล์ของคุณสำหรับ PyenV
ไม่จำเป็น. เพื่อแก้ไขคำเตือนของ brew doctor
"" config "สคริปต์อยู่นอกระบบของคุณหรือไดเรกทอรี homebrew"
หากคุณกำลังจะสร้างสูตร Homebrew จากแหล่งที่มาที่เชื่อมโยงกับ Python เช่น tkinter หรือ numpy (นี่เป็นกรณีโดยทั่วไปถ้าคุณเป็นนักพัฒนาสูตรดังกล่าวหรือถ้าคุณมี macOS รุ่น EOL ที่ขวด prebuilt เป็น ไม่ได้ให้อีกต่อไปและคุณกำลังใช้สูตรดังกล่าว)
เพื่อหลีกเลี่ยงการเชื่อมโยงกับ Python ที่จัดเตรียม PyenV โดยไม่ได้ตั้งใจเพิ่มบรรทัดต่อไปนี้ลงในการกำหนดค่าของเชลล์แบบโต้ตอบของคุณ:
bash/zsh:
alias brew= ' env PATH="${PATH//$(pyenv root)/shims:/}" brew '
ปลา:
alias brew= " env PATH=(string replace (pyenv root)/shims '' "$ PATH " ) brew "
Pyenv ไม่สนับสนุน Windows อย่างเป็นทางการและไม่ทำงานใน Windows นอกระบบย่อย Windows สำหรับ Linux ยิ่งกว่านั้นแม้จะมีงูหลามที่ติดตั้งไม่ใช่เวอร์ชัน Windows ดั้งเดิม แต่เป็นเวอร์ชัน Linux ที่ทำงานในเครื่องเสมือน-ดังนั้นคุณจะไม่ได้รับฟังก์ชั่นเฉพาะของ Windows
หากคุณอยู่ใน Windows เราขอแนะนำให้ใช้ pyenv-win
Fork ของ @Kirankotari ซึ่งติดตั้งเวอร์ชัน Python Windows ดั้งเดิม
การตั้งค่าด้านล่างควรทำงานให้กับผู้ใช้ส่วนใหญ่สำหรับกรณีการใช้งานทั่วไป ดูการกำหนดค่าขั้นสูงสำหรับรายละเอียดและตัวเลือกการกำหนดค่าเพิ่มเติม
ไฟล์เริ่มต้นการทุบตีสต็อกแตกต่างกันอย่างกว้างขวางระหว่างการแจกแจงซึ่งแหล่งที่มาซึ่งภายใต้สถานการณ์ใดในลำดับใดและการกำหนดค่าเพิ่มเติมที่พวกเขาดำเนินการ ดังนั้นวิธีที่เชื่อถือได้มากที่สุดในการรับ PyenV ในทุกสภาพแวดล้อมคือการต่อท้ายคำสั่งการกำหนดค่า Pyenv กับทั้ง .bashrc
(สำหรับเชลล์แบบโต้ตอบ) และไฟล์โปรไฟล์ที่ BASH จะใช้ (สำหรับเชลล์เข้าสู่ระบบ)
ก่อนอื่นให้เพิ่มคำสั่งลงใน ~/.bashrc
โดยเรียกใช้สิ่งต่อไปนี้ในเทอร์มินัลของคุณ:
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
จากนั้นถ้าคุณมี ~/.profile
, ~/.bash_profile
หรือ ~/.bash_login
ให้เพิ่มคำสั่งที่นั่นเช่นกัน หากคุณไม่มีสิ่งเหล่านี้ให้สร้าง ~/.profile
และเพิ่มคำสั่งที่นั่น
~/.profile
: echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.profile
echo ' command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.profile
echo ' eval "$(pyenv init -)" ' >> ~ /.profile
~/.bash_profile
: echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.bash_profile
echo ' [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.bash_profile
echo ' eval "$(pyenv init -)" ' >> ~ /.bash_profile
คำเตือน Bash : มีบางระบบที่ตัวแปร BASH_ENV
ได้รับการกำหนดค่าให้ชี้ไปที่ .bashrc
ในระบบดังกล่าวคุณควรใส่ eval "$(pyenv init -)"
อย่างแน่นอนลงใน .bash_profile
และ ไม่ เข้าไปใน .bashrc
มิฉะนั้นคุณอาจสังเกตเห็นพฤติกรรมที่แปลกประหลาดเช่น pyenv
เข้าสู่วงที่ไม่มีที่สิ้นสุด ดู #264 สำหรับรายละเอียด
echo ' export PYENV_ROOT="$HOME/.pyenv" ' >> ~ /.zshrc
echo ' [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~ /.zshrc
echo ' eval "$(pyenv init -)" ' >> ~ /.zshrc
หากคุณต้องการได้รับ pyenv ในเชลล์เข้าสู่ระบบที่ไม่โต้ตอบเช่นกันให้เพิ่มคำสั่งลงใน ~/.zprofile
หรือ ~/.zlogin
หากคุณมีปลา 3.2.0 หรือใหม่กว่าให้ดำเนินการแบบโต้ตอบนี้:
set -Ux PYENV_ROOT $HOME /.pyenv
fish_add_path $PYENV_ROOT /bin
มิฉะนั้นให้ดำเนินการตัวอย่างด้านล่าง:
set -Ux PYENV_ROOT $HOME /.pyenv
set -U fish_user_paths $PYENV_ROOT /bin $fish_user_paths
ตอนนี้เพิ่มสิ่งนี้ลงใน ~/.config/fish/config.fish
:
pyenv init - | source
สำหรับการเปลี่ยนแปลง PATH
ที่จะมีผล
exec " $SHELL "
ติดตั้ง Python Build Dependencies ก่อนที่จะพยายามติดตั้งรุ่น Python ใหม่
ตอนนี้คุณสามารถเริ่มใช้ Pyenv
หากคุณอัพเกรดจาก Pyenv เวอร์ชัน 2.0.x-2.2.x
ตรรกะและคำแนะนำเริ่มต้นได้รับการปรับปรุงเพื่อความเรียบง่ายใน 2.3.0 ก่อนหน้านี้รูปแบบการกำหนดค่าที่ซับซ้อนมากขึ้นสำหรับ 2.0.0-2.2.5 ยังคงใช้งานได้
PYENV_ROOT
เพื่อชี้ไปที่เส้นทางที่ PYENV จะเก็บข้อมูล $HOME/.pyenv
เป็นค่าเริ่มต้น หากคุณติดตั้ง PyenV ผ่านการชำระเงิน GIT เราขอแนะนำให้ตั้งค่าเป็นตำแหน่งเดียวกันกับที่คุณโคลนpyenv
ที่ปฏิบัติการได้ใน PATH
ของคุณหากยังไม่มีอยู่ที่นั่นeval "$(pyenv init -)"
เพื่อติดตั้ง pyenv
ลงในเชลล์ของคุณเป็นฟังก์ชันเชลล์เปิดใช้งาน shims และการเติมข้อความอัตโนมัติeval "$(pyenv init --path)"
แทนการเปิดใช้งาน shims โดยไม่ต้องรวมเชลล์ ในการติดตั้งรุ่น Python เพิ่มเติมให้ใช้ pyenv install
ตัวอย่างเช่นในการดาวน์โหลดและติดตั้ง Python 3.10.4, Run:
pyenv install 3.10.4
Running pyenv install -l
ให้รายการของเวอร์ชันที่มีทั้งหมดทั้งหมด
หมายเหตุ: หากคุณมีปัญหาในการติดตั้งเวอร์ชัน Python โปรดไปที่หน้า Wiki เกี่ยวกับปัญหาการสร้างทั่วไป
หมายเหตุ: หากคุณต้องการใช้พร็อกซีสำหรับดาวน์โหลดโปรดตั้งค่าตัวแปรสภาพแวดล้อม http_proxy
และ https_proxy
หมายเหตุ: หากคุณต้องการล่ามที่เร็วขึ้นในราคาที่ยาวนานขึ้นให้ดู ที่การสร้างประสิทธิภาพสูงสุด ใน ReadMe ของ Python-Build
คำสั่งย่อยของ PYENV ทั้งหมดยกเว้นถอน uninstall
แก้ไขคำนำหน้าเต็มรูปแบบโดยอัตโนมัติเป็นเวอร์ชันล่าสุดในบรรทัดเวอร์ชันที่สอดคล้องกัน
pyenv install
เลือกเวอร์ชันล่าสุดที่รู้จักในขณะที่คำสั่งย่อยอื่น ๆ เลือกเวอร์ชันล่าสุดที่ติดตั้ง
เช่นในการติดตั้งแล้วสลับเป็นรุ่น 3.10 ล่าสุด:
pyenv install 3.10
pyenv global 3.10
คุณสามารถเรียกใช้ pyenv latest -k <prefix>
เพื่อดูว่า pyenv install
จะแก้ไขคำนำหน้าเฉพาะหรือ pyenv latest <prefix>
เพื่อดูว่าคำสั่งย่อยอื่น ๆ จะแก้ไขได้อย่างไร
ดูเอกสาร pyenv latest
สำหรับรายละเอียด
สำหรับการเปิดตัว Python ต่อไปนี้ PyenV ใช้แพตช์ที่ผู้ใช้ให้ซึ่งเพิ่มการสนับสนุนสำหรับสภาพแวดล้อมที่ใหม่กว่า แม้ว่าเราจะไม่ได้รักษาแพตช์เหล่านั้นไว้อย่างแข็งขันเนื่องจากรุ่นที่มีอยู่ไม่เคยเปลี่ยนแปลง แต่ก็ปลอดภัยที่จะสมมติว่าพวกเขาจะทำงานต่อไปจนกว่าจะมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ในสภาพแวดล้อมเหล่านั้นในภายหลัง
หากต้องการเลือก Python ที่ติดตั้ง PyenV เป็นเวอร์ชันที่ใช้ให้เรียกใช้หนึ่งในคำสั่งต่อไปนี้:
pyenv shell <version>
- เลือกเพียงแค่เซสชันเชลล์ปัจจุบันpyenv local <version>
- เลือกโดยอัตโนมัติเมื่อใดก็ตามที่คุณอยู่ในไดเรกทอรีปัจจุบัน (หรือไดเรกทอรีย่อย)pyenv global <version>
- เลือกทั่วโลกสำหรับบัญชีผู้ใช้ของคุณเช่นในการเลือก Python 3.10.4 ที่ติดตั้งใหม่ดังกล่าวข้างต้นเป็นเวอร์ชันที่คุณต้องการใช้:
pyenv global 3.10.4
ตอนนี้เมื่อใดก็ตามที่คุณเรียกใช้ python
, pip
ฯลฯ การดำเนินการจากการติดตั้ง 3.10.4 ที่จัดเตรียม PyenV จะถูกเรียกใช้แทนระบบ Python
การใช้ " system
" เป็นชื่อเวอร์ชันจะรีเซ็ตการเลือกไปยัง Python ที่ให้บริการของคุณ
ดูการทำความเข้าใจกับการเลือกรุ่น Python สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการเลือกการทำงานและข้อมูลเพิ่มเติมเกี่ยวกับการใช้งาน
เมื่อเวลาผ่านไปคุณจะสะสมรุ่น Python ในไดเรกทอรี $(pyenv root)/versions
ของคุณ
ในการลบรุ่น Python เก่าให้ใช้ pyenv uninstall <versions>
หรือคุณสามารถ rm -rf
ไดเร็กทอรีของเวอร์ชันที่คุณต้องการลบ คุณสามารถค้นหาไดเรกทอรีของรุ่น Python เฉพาะด้วยคำสั่ง pyenv prefix
เช่น pyenv prefix 2.6.8
อย่างไรก็ตามโปรดทราบว่าปลั๊กอินอาจเรียกใช้การดำเนินการเพิ่มเติมในการถอนการติดตั้งซึ่งคุณจะต้องทำด้วยมือเช่นกัน เช่น pyenv-virtualenv ยังลบสภาพแวดล้อมเสมือนจริงใด ๆ ที่เชื่อมโยงกับเวอร์ชันที่ถูกถอนการติดตั้ง
เรียกใช้ pyenv commands
เพื่อรับรายการคำสั่งย่อยทั้งหมดที่มีอยู่ เรียกใช้คำสั่งย่อยด้วย --help
เพื่อขอความช่วยเหลือหรือดูการอ้างอิงคำสั่ง
โปรดทราบว่าปลั๊กอิน Pyenv ที่คุณติดตั้งอาจเพิ่มคำสั่งย่อยของตัวเอง
หากคุณติดตั้ง pyenv โดยใช้ homebrew ให้อัพเกรดโดยใช้:
brew upgrade pyenv
หากต้องการเปลี่ยนจากการเปิดตัวเป็นหัวหน้าพัฒนาล่าสุดของ Pyenv ให้ใช้:
brew uninstall pyenv
brew install pyenv --head
จากนั้นคุณสามารถอัพเกรดด้วย brew upgrade pyenv
ได้ตามปกติ
หากคุณติดตั้ง PyenV ด้วย Pyenv-Installer คุณอาจมีปลั๊กอิน Pyenv-Update ที่จะอัพเกรด Pyenv และปลั๊กอินที่ติดตั้งทั้งหมด:
pyenv update
หากคุณติดตั้ง PyenV โดยใช้ Pyenv-Installer หรือ Git Checkout คุณสามารถอัพเกรดการติดตั้งของคุณได้ตลอดเวลาโดยใช้ Git
หากต้องการอัพเกรดเป็น Pyenv เวอร์ชันการพัฒนาล่าสุดให้ใช้ git pull
:
cd $( pyenv root )
git pull
หากต้องการอัพเกรดเป็น PyenV ที่เผยแพร่เฉพาะให้ตรวจสอบแท็กที่เกี่ยวข้อง:
cd $( pyenv root )
git fetch
git tag
git checkout v0.1.0
ความเรียบง่ายของ PyenV ทำให้ง่ายต่อการปิดการใช้งานชั่วคราวหรือถอนการติดตั้งจากระบบ
หากต้องการ ปิดใช้งาน PyenV การจัดการเวอร์ชัน Python ของคุณเพียงลบการเรียกใช้ pyenv init
ออกจากการกำหนดค่าเริ่มต้นของเชลล์ สิ่งนี้จะลบไดเรกทอรี Pyenv Shims ออกจาก PATH
และการเรียกร้องในอนาคตเช่น python
จะดำเนินการรุ่น Python ของระบบเหมือนก่อนหน้า Pyenv
pyenv
จะยังคงสามารถเข้าถึงได้ในบรรทัดคำสั่ง แต่แอพ Python ของคุณจะไม่ได้รับผลกระทบจากการสลับเวอร์ชัน
หากต้องการ ถอนการติดตั้ง PYENV อย่างสมบูรณ์ให้ลบบรรทัดการกำหนดค่า PYENV ทั้งหมด ออกจากการกำหนดค่าการเริ่มต้นเชลล์ของคุณจากนั้นลบไดเรกทอรีรูท สิ่งนี้จะ ลบรุ่น Python ทั้งหมด ที่ติดตั้งภายใต้ $(pyenv root)/versions/
ไดเรกทอรี:
rm -rf $( pyenv root )
หากคุณติดตั้ง PyenV โดยใช้ตัวจัดการแพ็คเกจเป็นขั้นตอนสุดท้ายให้ทำการกำจัดแพ็คเกจ PyenV ตัวอย่างเช่นสำหรับ homebrew:
brew uninstall pyenv
Pyenv ให้วิธีง่ายๆในการขยายและปรับแต่งฟังก์ชั่นด้วยปลั๊กอิน - ง่ายพอ ๆ กับการสร้างไดเรกทอรีปลั๊กอินและวางสคริปต์เชลล์ลงบนท่ามกลางทุ่นระเบิดของมันด้วยตรรกะพิเศษที่คุณต้องใช้ในบางช่วงเวลา
แนวคิดหลักคือสิ่งส่วนใหญ่ที่คุณสามารถใส่ภายใต้ $PYENV_ROOT/<whatever>
คุณสามารถใส่ภายใต้ $PYENV_ROOT/plugins/your_plugin_name/<whatever>
ดู ปลั๊กอิน บนวิกิเกี่ยวกับวิธีการติดตั้งและใช้ปลั๊กอินรวมถึงแคตตาล็อกของปลั๊กอินที่มีประโยชน์สำหรับความต้องการทั่วไป
ดู ปลั๊กอินการเขียน บนวิกิเกี่ยวกับการเขียนปลั๊กอินของคุณเอง
ในระดับสูง Pyenv จะสกัดกั้นคำสั่ง Python โดยใช้ SHIM Executables ที่ฉีดเข้าไปใน PATH
ของคุณกำหนดเวอร์ชัน Python ที่ระบุโดยแอปพลิเคชันของคุณและส่งคำสั่งของคุณไปยังการติดตั้ง Python ที่ถูกต้อง
เมื่อคุณเรียกใช้คำสั่งเช่น python
หรือ pip
เชลล์ของคุณ (bash / zshrc / ... ) จะค้นหาผ่านรายการไดเรกทอรีเพื่อค้นหาไฟล์ที่เรียกใช้งานได้ด้วยชื่อนั้น รายการของไดเรกทอรีนี้อาศัยอยู่ในตัวแปรสภาพแวดล้อมที่เรียกว่า PATH
โดยแต่ละไดเรกทอรีในรายการคั่นด้วยลำไส้ใหญ่:
/usr/local/bin:/usr/bin:/bin
ไดเรกทอรีใน PATH
จะถูกค้นหาจากซ้ายไปขวาดังนั้นการจับคู่ที่เข้ากันได้ในไดเรกทอรีที่จุดเริ่มต้นของรายการจะมีความสำคัญกว่าอีกอันหนึ่งในตอนท้าย ในตัวอย่างนี้ไดเรกทอรี /usr/local/bin
จะถูกค้นหาก่อนจากนั้น /usr/bin
จากนั้น /bin
Pyenv ทำงานโดยการใส่ไดเรกทอรีของ shims ที่ด้านหน้าของ PATH
ของคุณ:
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
ผ่านกระบวนการที่เรียกว่า การฟื้นฟู Pyenv รักษา shims ไว้ในไดเรกทอรีนั้นเพื่อให้ตรงกับคำสั่ง Python ทุกคำสั่งในทุกรุ่นที่ติดตั้งของ Python - python
, pip
และอื่น ๆ
Shims เป็นปฏิบัติการที่มีน้ำหนักเบาซึ่งผ่านคำสั่งของคุณไปยัง Pyenv ดังนั้นเมื่อติดตั้ง Pyenv เมื่อคุณเรียกใช้พูด, pip
, ระบบปฏิบัติการของคุณจะทำสิ่งต่อไปนี้:
PATH
ของคุณสำหรับไฟล์ที่เรียกใช้งานชื่อ pip
pip
ที่จุดเริ่มต้นของ PATH
ของคุณpip
ซึ่งจะส่งผ่านคำสั่งไปยัง Pyenvเมื่อคุณดำเนินการ Shim Pyenv จะกำหนดเวอร์ชัน Python ที่จะใช้โดยการอ่านจากแหล่งข้อมูลต่อไปนี้ตามลำดับนี้:
ตัวแปรสภาพแวดล้อม PYENV_VERSION
(ถ้าระบุ) คุณสามารถใช้คำสั่ง pyenv shell
เพื่อตั้งค่าตัวแปรสภาพแวดล้อมนี้ในเซสชันเชลล์ปัจจุบันของคุณ
ไฟล์ .python-version
เฉพาะแอปพลิเคชันในไดเรกทอรีปัจจุบัน (ถ้ามี) คุณสามารถแก้ไขไฟล์ .python-version
ของไดเรกทอรีปัจจุบันด้วยคำสั่ง pyenv local
พบไฟล์ .python-version
ตัวแรก (ถ้ามี) โดยการค้นหาไดเรกทอรีหลักแต่ละไดเรกทอรีจนกว่าจะถึงรูทของระบบไฟล์ของคุณ
ไฟล์ Global $(pyenv root)/version
คุณสามารถแก้ไขไฟล์นี้โดยใช้คำสั่ง pyenv global
หากไม่มีไฟล์เวอร์ชันทั่วโลก PYENV จะถือว่าคุณต้องการใช้ "ระบบ" Python (ดูด้านล่าง)
ชื่อรุ่นพิเศษ " system
" หมายถึงการใช้อะไรก็ตามที่พบหลามบน PATH
หลังจากรายการ PATH
Shims (กล่าวอีกนัยหนึ่งสิ่งที่จะทำงานถ้า Pyenv Shims ไม่ได้อยู่บน PATH
) โปรดทราบว่า PyenV พิจารณาการติดตั้งเหล่านั้นนอกการควบคุมและไม่พยายามตรวจสอบหรือแยกแยะพวกเขาในทางใดทางหนึ่ง เช่นถ้าคุณอยู่ใน MacOS และมี Python 3.8.9 และ Homebrew-Installed Python 3.9.12 และ 3.10.2-สำหรับ Pyenv นี่ยังคงเป็นเวอร์ชัน " system
" เดียว PATH
ภายใต้ชื่อที่เรียกใช้งานที่คุณระบุจะถูกเรียกใช้
หมายเหตุ: คุณสามารถเปิดใช้งานหลายรุ่นในเวลาเดียวกันรวมถึง Python2 หรือ Python3 หลายรุ่นพร้อมกัน สิ่งนี้ช่วยให้การใช้งานแบบขนานของ Python2 และ Python3 และจำเป็นต้องใช้เครื่องมือเช่น tox
ตัวอย่างเช่นในการสั่งให้ Pyenv ใช้ระบบ Python และ Python3 ของคุณก่อน (เช่น 2.7.9 pyenv install
3.4.2) แต่ยังมี Python 3.3.6, 3.2.1 และ 2.5.2 เวอร์ชันจากนั้นตั้งค่า pyenv global system 3.3.6 3.2.1 2.5.2
จากนั้นคุณจะสามารถเรียกใช้เวอร์ชันใดก็ได้ด้วยชื่อ pythonX
หรือ pythonX.Y
ที่เหมาะสม นอกจากนี้คุณยังสามารถระบุหลายรุ่นในไฟล์ .python-version
ด้วยมือคั่นด้วย newLines บรรทัดที่เริ่มต้นด้วย #
จะถูกละเว้น
pyenv which <command>
แสดงการเรียกใช้งานจริงที่จะเรียกใช้เมื่อคุณเรียกใช้ <command>
ผ่าน shim เช่นถ้าคุณมีการติดตั้ง 3.3.6, 3.2.1 และ 2.5.2 ซึ่งเลือก 3.3.6 และ 2.5.2 และ Python ระบบของคุณคือ 3.2.5, pyenv which python2.5
ควรแสดง $(pyenv root)/versions/2.5.2/bin/python2.5
, pyenv which python3
$(pyenv root)/versions/3.3.6/bin/python3
และ pyenv which python3.2
เส้นทางไปยังระบบ Python ของคุณเนื่องจาก Fall-Through (ดูด้านล่าง)
Shims ยังตกอยู่ในสิ่งใด ๆ บน PATH
หากการดำเนินการที่สอดคล้องกันไม่ได้อยู่ในการติดตั้ง Python ที่เลือกใด ๆ สิ่งนี้ช่วยให้คุณใช้โปรแกรมใด ๆ ที่ติดตั้งไว้ที่อื่นในระบบตราบใดที่พวกเขาไม่ได้รับการติดตั้ง Python ที่เลือก
เมื่อ Pyenv ได้พิจารณาว่าแอปพลิเคชันของคุณได้ระบุเวอร์ชันใดแล้วจะผ่านคำสั่งไปยังการติดตั้ง Python ที่สอดคล้องกัน
แต่ละรุ่น Python ถูกติดตั้งลงในไดเรกทอรีของตัวเองภายใต้ $(pyenv root)/versions
ตัวอย่างเช่นคุณอาจติดตั้งเวอร์ชันเหล่านี้:
$(pyenv root)/versions/2.7.8/
$(pyenv root)/versions/3.4.2/
$(pyenv root)/versions/pypy-2.4.0/
เท่าที่ Pyenv เกี่ยวข้องชื่อเวอร์ชันเป็นเพียงไดเรกทอรีภายใต้ $(pyenv root)/versions
ข้ามส่วนนี้เว้นแต่คุณจะต้องรู้ว่าทุกบรรทัดในโปรไฟล์เชลล์ของคุณกำลังทำอะไรอยู่
ดูส่วนตัวแปรสภาพแวดล้อมสำหรับตัวแปรสภาพแวดล้อมที่ควบคุมพฤติกรรมของ Pyenv
pyenv init
เป็นคำสั่งเดียวที่ข้ามบรรทัดของการโหลดคำสั่งพิเศษลงในเชลล์ของคุณ มาจาก RVM คุณบางคนอาจไม่เห็นด้วยกับความคิดนี้ นี่คือสิ่งที่ eval "$(pyenv init -)"
ทำจริง:
ตั้งค่าเส้นทาง Shims นี่คือสิ่งที่ช่วยให้ Pyenv สกัดกั้นและเปลี่ยนเส้นทางการเรียกใช้ของ python
, pip
ฯลฯ อย่างโปร่งใส มันล่วงหน้า $(pyenv root)/shims
ไปยัง $PATH
ของคุณ นอกจากนี้ยังลบอินสแตนซ์อื่น ๆ ของ $(pyenv root)/shims
บน PATH
ที่อนุญาตให้เรียกใช้ eval "$(pyenv init -)"
หลายครั้งโดยไม่ได้รับรายการ PATH
ที่ซ้ำกัน
ติดตั้งการเติมข้อความอัตโนมัติ นี่เป็นทางเลือกทั้งหมด แต่มีประโยชน์ค่อนข้างมาก การจัดหา $(pyenv root)/completions/pyenv.bash
จะตั้งค่านั้น นอกจากนี้ยังมีความสำเร็จสำหรับ ZSH และปลา
rehashes shims เป็นครั้งคราวคุณจะต้องสร้างไฟล์ Shim ของคุณใหม่ การทำสิ่งนี้บน init ทำให้แน่ใจว่าทุกอย่างทันสมัย คุณสามารถเรียกใช้ pyenv rehash
ด้วยตนเองได้ตลอดเวลา
ติดตั้ง pyenv
ลงในเชลล์ปัจจุบันเป็นฟังก์ชันเชลล์ บิตนี้ยังเป็นทางเลือก แต่อนุญาตให้ PyenV และปลั๊กอินเปลี่ยนตัวแปรในเชลล์ปัจจุบันของคุณ สิ่งนี้จำเป็นสำหรับคำสั่งบางอย่างเช่น pyenv shell
เพื่อทำงาน SH Dispatcher ไม่ได้ทำอะไรที่บ้าคลั่งเช่นการแทนที่ cd
หรือแฮ็คพรอมต์เชลล์ของคุณ แต่ถ้าด้วยเหตุผลบางอย่างคุณต้องการให้ pyenv
เป็นสคริปต์จริงมากกว่าฟังก์ชั่นเชลล์คุณสามารถข้ามได้อย่างปลอดภัย
eval "$(pyenv init --path)"
เท่านั้นรายการ 1 และ 3
หากต้องการดูว่าเกิดอะไรขึ้นภายใต้ประทุนสำหรับตัวคุณเองให้เรียกใช้ pyenv init -
หรือ pyenv init --path
eval "$(pyenv init -)"
ควรจะทำงานในการเริ่มต้นของ Shell Interactive (รวมถึงเปลือกซ้อน -เช่นที่เรียกใช้จากบรรณาธิการ) เพื่อให้คุณได้รับฟังก์ชั่นเชลล์ที่สมบูรณ์และสะดวกสบาย
eval "$(pyenv init --path)"
สามารถใช้แทน eval "$(pyenv init -)"
เพื่อเปิดใช้งาน shims โดยไม่มีการรวมเชลล์ นอกจากนี้ยังสามารถใช้ในการชน shims ไปที่ด้านหน้าของ PATH
หลังจากตรรกะอื่น ๆ ได้เตรียมสิ่งต่าง ๆ ไปยัง PATH
ที่อาจเงาของ Shims ของ Pyenv
~/.profile
prepends ต่อไดเรกทอรี bin
ของผู้ใช้ไปยัง PATH
หลังจากมีแหล่งที่มา ~/.bashrc
สิ่งนี้จำเป็นต่อการต่อท้ายการเรียก pyenv init
to ~/.profile
รวมถึง ~/.bashrc
ในการแจกแจงเหล่านี้เนื่องจาก PIP ของระบบทำให้ทำงานสำหรับโมดูลที่ติดตั้งโดยผู้ใช้ที่ไม่ได้รูทลงในไดเรกทอรี bin
ผู้ใช้ต่อผู้ใช้ หากคุณไม่ต้องการใช้ pyenv init
และ Shims คุณยังสามารถได้รับประโยชน์จากความสามารถของ Pyenv ในการติดตั้ง Python เวอร์ชันสำหรับคุณ เพียงเรียกใช้ pyenv install
และคุณจะพบเวอร์ชันที่ติดตั้งใน $(pyenv root)/versions
คุณสามารถเรียกใช้งานหรือ symlink ด้วยตนเองได้ตามต้องการหรือคุณสามารถใช้ pyenv exec <command>
เมื่อใดก็ตามที่คุณต้องการ <command>
จะได้รับผลกระทบจากการเลือกรุ่นของ PYENV ตามที่กำหนดค่าไว้ในปัจจุบัน
pyenv exec
ทำงานโดยเตรียม $(pyenv root)/versions/<selected version>/bin
ไปยัง PATH
ในสภาพแวดล้อมของ <command>
เช่นเดียวกับสิ่งที่ RVM ทำ
คุณสามารถส่งผลกระทบต่อวิธีการทำงานของ Pyenv ด้วยตัวแปรสภาพแวดล้อมต่อไปนี้:
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
PYENV_VERSION | ระบุรุ่น Python ที่จะใช้ ดู pyenv shell | |
PYENV_ROOT | ~/.pyenv | กำหนดไดเรกทอรีภายใต้รุ่น Python และ Shims อาศัยอยู่ ดู pyenv root ด้วย |
PYENV_DEBUG | เอาท์พุทข้อมูลการดีบัก ยังเป็น: pyenv --debug <subcommand> | |
PYENV_HOOK_PATH | ดูวิกิ | รายการเส้นทางที่คั่นด้วยลำไส้ใหญ่ค้นหาตะขอ Pyenv |
PYENV_DIR | $PWD | ไดเรกทอรีเพื่อเริ่มค้นหาไฟล์. .python-version |
ดูเพิ่มเติม ที่ตัวแปรสภาพแวดล้อมพิเศษ ในตัวแปร readme ของ Python-Build สำหรับตัวแปรสภาพแวดล้อมที่สามารถใช้ในการปรับแต่งการสร้าง
ซอร์สโค้ด PyenV โฮสต์บน GitHub มันสะอาดโมดูลาร์และเข้าใจง่ายแม้ว่าคุณจะไม่ใช่แฮ็กเกอร์เชลล์ก็ตาม
การทดสอบจะดำเนินการโดยใช้ค้างคาว:
bats test
bats/test/<file>.bats
อย่าลังเลที่จะส่งคำขอดึงและข้อบกพร่องไฟล์ในตัวติดตามปัญหา
โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการส่งการเปลี่ยนแปลง
ดู Changelog.md
ใบอนุญาต MIT