ฉันขอแนะนำอย่างยิ่งให้หลีกเลี่ยงpip3
การติดตั้งสิ่งต่าง ๆ ในระบบไซต์แพ็กเกจ ฉันเคยทำข้อโต้แย้งเหล่านี้มาก่อนแต่ฉันจะให้โน้ตกับคุณ:
- การอัปเดตระบบจะทำลายทุกสิ่ง
- การติดตั้งแพกเกจ apt สามารถเขียนทับสิ่งที่ติดตั้ง pip ได้
- ข้อขัดแย้งของเวอร์ชัน
- การอัพเกรดการกระจายความวุ่นวายเป็นสิ่งที่คาดเดาไม่ได้ อย่างจริงจัง. ฉันมีผมร่วงกับสิ่งเหล่านี้
virtualenv
ฉันจะขอสนับสนุนการใช้ มันเป็นความเจ็บปวดครั้งใหญ่ในทุก ๆ ที่ที่จะไป แต่เมื่อคุณตั้งค่าแล้วคุณจะมีสภาพแวดล้อมแบบ Python ที่สมบูรณ์ภายใต้การควบคุมที่สมบูรณ์ของคุณ นี่หมายความว่าทำงานได้มากขึ้น (คุณจะต้องตรวจสอบสิ่งต่าง ๆ เพื่อรับการปรับปรุงและpip
ยังไม่ได้ช่วยอะไรจริงๆ) แต่คุณไม่ต้องกังวลเกี่ยวกับสิ่งที่ Ubuntu ทำ
ฉันมีสภาพแวดล้อมสำหรับแต่ละไซต์ (แค่นั่งในไดเรกทอรีย่อยที่เรียกว่าvenv
) บางคนรวมถึงฉันทีละครั้ง - ชอบแชร์สภาพแวดล้อมระหว่างหลาย ๆ ไซต์ ฉันพบสิ่งนี้ง่ายกว่าในการรักษาในแง่ของการออกการปรับปรุง แต่บางเว็บไซต์อาจเปราะบางหรือต้องใช้รุ่นเก่าและที่ทำให้สภาพแวดล้อมทั้งหมดกลับมา YMMV
ในแง่ของการติดตั้งสิ่งนี้และเพื่อตบหน้าฉันvirtualenv
ไม่ได้บรรจุสำหรับ Python 3 ดังนั้นเราจึงต้องใช้pip3
:
$ sudo pip3 install virtualenv
...
$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.
$ source myenv/bin/activate # This is important!
ตอนนี้ทุบตี PS1 ของคุณควรได้รับการ preneded ด้วย(myenv)
เพื่อให้คุณรู้ว่าคุณอยู่ในสภาพแวดล้อมที่แตกต่างกัน เราสามารถทดสอบสภาพแวดล้อมเพื่อตรวจสอบว่าเราอยู่ในสิ่งที่ถูกต้อง (ไม่ได้ใช้เวอร์ชั่นระบบสำหรับผู้เริ่ม):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
และจากนั้นคุณสามารถดำเนินการต่อราวกับว่าคุณเป็นผู้เชี่ยวชาญของจักรวาล คุณไม่จำเป็นต้องรากที่จะใช้อีกต่อไปและคุณไม่จำเป็นต้องระบุpip
pip3
มันเป็นมิตรมากขึ้น
$ pip install django umemcache
...
หากคุณกำลังใช้สิ่งที่ต้องการuwsgi
โฮสต์สิ่งนี้ (คุณควร) ให้ใช้แฟล็ก -H (หรืออาร์กิวเมนต์การกำหนดค่าโฮม) เพื่อบอกว่าสภาพแวดล้อมของ Python นั้นอยู่ที่ใด
สำหรับการพัฒนาให้ง่ายขึ้นคุณสามารถ "ติดตั้ง" virtualenv
สภาพแวดล้อมของคุณโดยอัตโนมัติ มีสคริปต์จำนวนมากออกมี แต่หนึ่งนี้เป็นของฉัน (ชีวิตนี้ที่ด้านล่างของฉัน~/.bashrc
:
export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"
venvcd() {
wd=$(pwd)
[[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin
builtin cd "$@"
wd=$(pwd)
if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
source $VENVDIR_VENV/bin/activate
else
[ $wasin ] && deactivate
fi
}
alias cd="venvcd"
cd .
เมื่อใดก็ตามที่ฉันcd
เข้าไป/web
(ที่เก็บเว็บไซต์พัฒนาทั้งหมดของฉัน) มันจะติดตั้ง virtualenv ให้ฉัน โปรดทราบว่าฉันมีเพียงสภาพแวดล้อมเดียวสำหรับทุกไซต์ของฉันดังนั้นสิ่งนี้จะทำให้คุณเหมาะหากคุณทำสิ่งที่คล้ายกัน มีวิธีการอื่น ๆ ในการทำสิ่งที่คล้ายกัน