Tôi thực sự khuyên bạn nên tránh pip3
cài đặt mọi thứ trong gói trang web của hệ thống. Tôi đã đưa ra những lập luận này trước đây nhưng tôi sẽ cung cấp cho bạn các ghi chú:
- Cập nhật hệ thống phá vỡ mọi thứ
- Cài đặt gói apt có thể ghi đè lên những thứ được cài đặt pip
- Phiên bản xung đột
- Nâng cấp phân phối là sự hỗn loạn không thể đoán trước . Nghiêm túc. Tôi đã rụng tóc vì những điều này.
Tôi sẽ ủng hộ mạnh mẽ bằng cách sử dụng virtualenv
. Đó là một nỗi đau lớn ở mọi nơi để đến nhưng khi bạn đã thiết lập xong, bạn có một môi trường Python hoàn chỉnh dưới sự kiểm soát hoàn toàn của bạn. Điều này không có nghĩa là nhiều việc hơn (bạn sẽ phải kiểm tra mọi thứ để cập nhật và pip
chưa thực sự giúp đỡ ở đó) nhưng bạn không phải lo lắng về những gì Ubuntu đang làm.
Tôi có một môi trường cho mỗi trang web (chỉ cần ngồi trong thư mục con được gọi venv
). Một số người khác, trong đó có một lần, tôi thích chia sẻ môi trường của họ giữa nhiều trang web. Tôi thấy điều này dễ duy trì hơn trong việc phát hành các bản cập nhật nhưng một số trang web có thể dễ hỏng hoặc yêu cầu các phiên bản cũ và giữ lại toàn bộ môi trường. YMMV.
Về mặt cài đặt, và chỉ cần tát vào mặt tôi, virtualenv
chưa được đóng gói cho Python 3 nên chúng tôi phải sử dụng 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 bash của bạn bây giờ nên được bổ sung (myenv)
để cho bạn biết bạn đang ở một môi trường khác. Chúng tôi có thể kiểm tra môi trường để kiểm tra xem chúng tôi có đúng phiên bản của mọi thứ không (không sử dụng phiên bản hệ thống cho người mới bắt đầu):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Và sau đó bạn có thể tiếp tục như thể bạn là chủ nhân của vũ trụ. Bạn không cần root để sử dụng pip
nữa và bạn không cần chỉ định pip3
. Nó chỉ thân thiện hơn nhiều.
$ pip install django umemcache
...
Nếu bạn đang sử dụng một cái gì đó như uwsgi
để lưu trữ cái này (bạn nên) sử dụng cờ -H của nó (hoặc đối số cấu hình nhà) để nói với nó nơi môi trường Python sống.
Để việc phát triển dễ dàng hơn, bạn có thể tự động "gắn kết" virtualenv
môi trường của mình . Có nhiều kịch bản ngoài kia nhưng cái này là của tôi (cái này nằm ở dưới cùng của tôi ~/.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 .
Bất cứ khi nào tôi cd
vào /web
(nơi lưu trữ tất cả các trang web phát triển của tôi), nó sẽ gắn kết virtualenv cho tôi. Lưu ý rằng tôi chỉ có một môi trường cho tất cả các trang web của mình vì vậy điều này sẽ chỉ phù hợp với bạn nếu bạn làm điều gì đó tương tự. Có nhiều cách khác để làm những điều tương tự .