Saya sangat menyarankan pip3
untuk tidak menginstal hal-hal dalam paket sistem situs. Saya telah membuat argumen ini sebelumnya, tetapi saya akan memberi Anda catatan:
- Pembaruan sistem merusak segalanya
- Menginstal paket apt dapat menimpa hal-hal yang diinstal pada pip
- Konflik versi
- Pembaruan distribusi adalah kekacauan yang tidak dapat diprediksi . Serius. Saya kehilangan rambut untuk ini.
Saya akan sangat menganjurkan penggunaan virtualenv
. Ini adalah rasa sakit yang luar biasa di mana pun untuk pergi tetapi setelah Anda mengaturnya, Anda memiliki lingkungan Python lengkap di bawah kendali penuh Anda. Ini berarti lebih banyak pekerjaan (Anda harus memeriksa hal-hal untuk pembaruan dan pip
belum benar-benar membantu di sana) tetapi Anda tidak perlu khawatir tentang apa yang sedang dilakukan Ubuntu.
Saya memiliki lingkungan untuk setiap situs (hanya duduk di subdirektori bernama venv
). Beberapa orang — termasuk saya, sekali waktu — lebih suka berbagi lingkungan di antara banyak situs. Saya menemukan ini lebih mudah untuk dipertahankan dalam hal mengeluarkan pembaruan tetapi beberapa situs dapat rapuh atau memerlukan versi lama dan yang menahan seluruh lingkungan. YMMV.
Dalam hal menginstal ini, dan hanya untuk menampar wajah saya, virtualenv
belum dikemas untuk Python 3 jadi kita harus menggunakan 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!
Bash PS1 Anda sekarang harus diubah (myenv)
untuk memberi tahu Anda bahwa Anda berada di lingkungan yang berbeda. Kita dapat menguji lingkungan untuk memeriksa kita berada di versi yang benar (tidak menggunakan versi sistem sebagai permulaan):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Dan kemudian Anda bisa melanjutkan seolah-olah Anda adalah penguasa alam semesta. Anda tidak perlu root untuk digunakan pip
lagi dan Anda tidak perlu menentukan pip3
. Itu jauh lebih ramah.
$ pip install django umemcache
...
Jika Anda menggunakan sesuatu seperti uwsgi
untuk meng-host ini (Anda harus) menggunakan flag -H-nya (atau argumen konfigurasi rumah) untuk memberi tahu di mana lingkungan Python tinggal.
Sedangkan untuk memudahkan pengembangan, Anda dapat "memasang" virtualenv
lingkungan Anda secara otomatis . Ada banyak skrip di luar sana tetapi ini adalah milikku (ini hidup di bagian bawah saya ~/.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 .
Setiap kali saya cd
masuk /web
(tempat semua situs web pengembangan saya disimpan), ia memasang virtualenv untuk saya. Perhatikan bahwa saya hanya memiliki satu lingkungan untuk semua situs saya jadi ini hanya akan cocok untuk Anda jika Anda melakukan sesuatu yang serupa. Ada banyak cara lain untuk melakukan hal serupa .