Setelah mencoba install virtualenv dengan pip
$ pip install virtualenv
Aku punya permission denied error
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'
Jadi saya menggunakan sudo untuk install virtualenv
$ sudo pip install virtualenv
Tapi kemudian sebuah peringatan muncul:
direktori '/Pengguna/petertao/Library/Caches/pip/http' atau induknya direktori yang tidak dimiliki oleh pengguna saat ini dan cache telah dinonaktifkan. Silahkan periksa izin dan pemilik dari direktori tersebut. Jika melaksanakan pip dengan sudo, anda mungkin ingin sudo's -H bendera.
direktori '/Pengguna/petertao/Library/Caches/pip' atau induknya direktori yang tidak dimiliki oleh pengguna saat ini dan caching roda telah dinonaktifkan. periksa izin dan pemilik dari direktori tersebut. Jika melaksanakan pip dengan sudo, anda mungkin ingin sudo's -H bendera.
Apa sudo's -H bendera lakukan?
man sudo
(teks yang tepat dapat bervariasi, tetapi ini akan menjadi yang serupa):
-H
- H (HOME) pilihan permintaan bahwa kebijakan keamanan yang ditetapkan HOME variabel lingkungan ke direktori home dari target user (root dengan default) sebagaimana ditentukan oleh password database. Tergantung pada kebijakan, ini mungkin perilaku default.
Jadi mengapa apakah ini suatu pilihan? Biasanya menggunakan "sudo" tidak mengubah $HOME variabel lingkungan.
misalnya:
echo $HOME $USER
/home/testuser testuser
sudo bash -c 'echo $HOME $USER'
/home/testuser root
sudo -H bash -c 'echo $HOME $USER'
/home/root root
Anda dapat melihat bahwa normal sudo perubahan yang pengguna saya dari "testuser" untuk "root", tapi tidak apa $HOME set, sedangkan sudo -Jam juga perubahan variabel dari "saya" direktori home untuk root's home directory.
pip adalah peringatan anda bahwa itu dijalankan sebagai user root dan ingin mengubah hal-hal di $HOME, yang diatur ke '/Pengguna/petertao', yang tidak dimiliki oleh root (paling mungkin "petertao" user). peringatan menunjukkan bahwa pip menggunakan $RUMAH untuk file cache, tapi memiliki keluarga sendiri caching karena kepemilikan folder perbedaan.
Tentu saja saat dijalankan sebagai root pip dapat memodifikasi '/Pengguna/petertao/Library/Caches/pip' karena akar adalah (hampir) yang maha esa. Ini bisa menjadi merepotkan kemudian karena sebuah program yang berjalan tanpa root tidak bisa lagi menimpa atau memodifikasi file-file ini. Bukan pip menolak untuk menulis ke direktori yang dimiliki oleh pengguna lain.