Pertanyaan pendek
- Apa cara yang tepat untuk menginstal
pip
,virtualenv
dandistribute
?
Latar Belakang
Dalam jawaban saya untuk pertanyaan SO 4314376 , saya merekomendasikan menggunakan ez_setup
sehingga Anda dapat menginstal pip
dan virtualenv
sebagai berikut:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Saya awalnya menarik instruksi ini dari posting blog Jesse Noller. Jadi, Anda ingin menggunakan Python di Mac? . Saya suka gagasan menjaga direktori global paket situs yang bersih, jadi satu-satunya paket yang saya instal ada virtualenvwrapper
dan distribute
. (Saya baru-baru ini ditambahkan distribute
ke kotak alat saya karena pengumuman layanan publik Python ini . Untuk menginstal dua paket ini, saya menggunakan:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Tidak ada lagi setuptools dan easy_install
Untuk benar-benar mengikuti pengumuman layanan publik Python , pada pemasangan Python baru, saya akan melakukan hal berikut:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Teguran Glyph
Dalam komentar atas jawaban saya untuk pertanyaan SO 4314376 , pengguna SO Glyph menyatakan:
TIDAK. TIDAK PERNAH melakukan
sudo python setup.py install
apapun. Tuliskan ~ / .pydistutils.cfg yang menempatkan instalasi pip Anda menjadi ~ / .local atau apalah. Terutama file yang dinamaiez_setup.py
cenderung menyedot versi yang lebih baru dari hal-hal seperti setuptools dan easy_install, yang berpotensi merusak hal-hal lain pada sistem operasi Anda.
Kembali ke pertanyaan singkat
Jadi , respons Glyph membawa saya ke pertanyaan awal saya:
- Apa cara yang tepat untuk menginstal
pip
,virtualenv
dandistribute
?
sumber
python distribute_setup.py
diikuti oleheasy_install pip
danvirtualenv --distribute venv
? (lihat python-guide.readthedocs.org/en/latest/starting/install/… ), dan jika demikian, mengapa?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
, dan Python PSA.http://python-distribute.org/distribute_setup.py
redirect ke 404 :(Jawaban:
Anda dapat melakukan ini tanpa menginstal apa pun ke dalam python itu sendiri.
Anda tidak perlu sudo atau hak istimewa apa pun.
Anda tidak perlu mengedit file apa pun.
Instal virtualenv ke lingkungan virtual bootstrap. Gunakan lingkungan virtual itu untuk membuat lebih banyak. Karena virtualenv dikirimkan dengan pip dan distribusi, Anda mendapatkan semuanya dari satu pemasangan.
Berikut ini contoh dalam bash:
Sekarang Anda dapat menggunakan lingkungan "bootstrap" Anda untuk membuat lebih banyak:
Tergila-gila!
Catatan
Ini mengasumsikan Anda tidak menggunakan versi virtualenv yang benar-benar lama. Versi lama membutuhkan bendera
--no-site-packges
(dan tergantung pada versi Python,--distribute
). Sekarang Anda dapat membuat lingkungan bootstrap Anda hanya denganpython virtualenv.py path-to-bootstrap
ataupython3 virtualenv.py path-to-bootstrap
.sumber
python virtualenv.py TARGET_DIRECTORY
melakukan hal yang sama.virtualenv
tidak memerlukan opsi '--tidak ada situs - paket --distribusi'.--system-site-packages
Mungkin sebaliknya yang diperlukancurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Docs memperingatkan secara khusus untuk tidak menginstalnya dalam virtualenv (meskipun tampaknya berfungsi ).Saya pikir Glyph berarti melakukan sesuatu seperti ini:
~/.local
, jika belum ada.~/.bashrc
, pastikan itu~/.local/bin
aktifPATH
dan~/.local
aktifPYTHONPATH
.Buat file
~/.pydistutils.cfg
yang berisiIni adalah file format standar ConfigParser.
Unduh
distribute_setup.py
dan jalankanpython distribute_setup.py
(tidaksudo
). Jika ada keluhan tentangsite-packages
direktori yang tidak ada , buatlah secara manual:mkdir -p ~ / .local / lib / python2.7 / paket-situs /
Jalankan
which easy_install
untuk memverifikasi bahwa itu berasal~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
Di
~/.bashrc
tambahkanItu saja, tidak ada gunanya
sudo
sama sekali dan lingkungan Python Anda dalam~/.local
, benar-benar terpisah dari OS Python. Penafian: Tidak yakin seberapa kompatibelvirtualenvwrapper
dalam skenario ini - saya tidak bisa mengujinya di sistem saya :-)sumber
easy_install pip
antara langkah 5 dan 6.Jika Anda mengikuti langkah-langkah yang disarankan dalam beberapa tutorial yang saya tautkan dalam jawaban ini , Anda bisa mendapatkan efek yang diinginkan tanpa langkah-langkah "manual" yang agak rumit dalam jawaban Walker dan Vinay. Jika Anda menggunakan Ubuntu:
Hal yang sama dicapai dalam OS X dengan menggunakan homebrew untuk menginstal python (lebih detail di sini ).
Dengan
pip
terinstal, Anda dapat menggunakannya untuk mendapatkan paket yang tersisa (Anda dapat menghilangkansudo
di OS X, karena Anda menggunakan instalasi python lokal Anda).(Ini adalah satu-satunya paket yang perlu Anda instal secara global dan saya ragu itu akan berbenturan dengan sistem tingkat apa pun dari OS. Jika Anda ingin menjadi super aman, Anda dapat menyimpan versi distro
sudo apt-get install virtualenvwrapper
)Catatan: di Ubuntu 14.04 saya menerima beberapa kesalahan dengan pemasangan pip , jadi saya menggunakan
pip3 install virtualenv virtualenvwrapper
dan menambahkanVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
ke.bashrc/.zshrc
file saya .Anda kemudian menambahkan
.bashrc
file Andadan sumbernya
Ini pada dasarnya itu. Sekarang satu-satunya keputusan adalah apakah Anda ingin membuat virtualenv untuk menyertakan paket tingkat sistem
di mana paket sistem Anda yang ada tidak perlu diinstal ulang, mereka disinkronkan dengan versi juru bahasa sistem. Catatan: Anda masih dapat menginstal paket baru dan memutakhirkan paket yang disertakan dari sistem tanpa sudo - Saya mengujinya dan berfungsi tanpa gangguan apa pun dari juru bahasa sistem.
Alternatifnya, jika Anda ingin lingkungan yang benar-benar terpisah, adalah
atau mengingat bahwa ini adalah opsi default, cukup
Hasilnya adalah Anda memiliki virtualenv baru di mana Anda dapat dengan bebas dan tanpa sengaja menginstal paket favorit Anda
sumber
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
menarik pip + setuptools in). Pendekatan ini berfungsi baik untuk saya. Selain itu, berfokus pada pip tampaknya akan menjadi jalur masa depan dalam kemasan Python juga.WORKON_HOME
default ke~/.virtualenvs
, ya. Ada garis di/usr/local/bin/virtualenvwrapper.sh
set ituworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
baris Anda denganpip install --upgrade distribute
dalam virtualenv diaktifkan yang kemudian saya instal pyopencl. Saya juga menambahkanexport PROJECT_HOME="$HOME/src"
ke bashrc saya untuk mengaktifkanmkproject
alat venv keren .Python 3.4 dan seterusnya
Python 3.3 menambahkan modul venv , dan Python 3.4 menambahkan modul ensurepip . Ini membuat bootstrap pip semudah:
Mungkin didahului oleh panggilan
venv
untuk melakukannya di dalam lingkungan virtual.Pip yang dijamin dijelaskan dalam PEP 453 .
sumber
Di Ubuntu:
sudo apt-get install python-virtualenv
Paket
python-pip
ini adalah dependensi, jadi itu akan diinstal juga.sumber
pip
, lebih disukai dalamvirtualenv
, dan tidak pernah menggunakansudo
untuk keduanyapip
terkadang memiliki bug yang signifikan, jadi saya sering berakhir menggunakan yangget-pip.py
disediakan di python.org.Saya membuat prosedur ini untuk kami gunakan di tempat kerja.
Poin-poin penting untuk keamanan:
sumber
Pembaruan: Per Juli 2013 proyek ini tidak lagi dipertahankan. Penulis menyarankan menggunakan pyenv . (Pyenv tidak memiliki dukungan bawaan untuk virtualenv, tetapi bermain bagus dengannya.)
Pythonbrew adalah manajer versi untuk python dan dilengkapi dengan dukungan untuk virtualenv.
Setelah menginstal pythonbrew dan versi python menggunakan venvs sangat mudah:
sumber
pyenv
, yang berfungsi dengan baik.Tidak ada masalah untuk melakukan pemasangan sudo python setup.py, jika Anda yakin itulah yang ingin Anda lakukan.
Perbedaannya adalah ia akan menggunakan direktori paket situs OS Anda sebagai tujuan untuk file .py yang akan disalin.
jadi, jika Anda ingin pip dapat diakses dengan lebar, itu mungkin cara untuk pergi. Saya tidak mengatakan bahwa cara orang lain itu buruk, tetapi ini mungkin cukup adil.
sumber
pip freeze
membuat saya hampir beku - daftar paket, sedang menginstal sistem yang luas terlalu lama. Sejak saat itu, saya sangat menyarankan untuk menggunakan instalasi paket python "no sudo" dan "no os-wide".Instal ActivePython . Ini termasuk pip, virtualenv dan Distribute.
sumber
Saya menemukan masalah yang sama baru-baru ini. Saya menjadi lebih parsial dengan pola pikir "selalu menggunakan virtualenv", jadi masalah saya adalah menginstal virtualenv dengan pip tanpa menginstal distro ke direktori paket situs global atau pengguna saya. Untuk melakukan ini, saya secara manual mengunduh distribusi, pip dan virtualenv, dan untuk masing-masing saya menjalankan "python setup.py install --prefix ~ / .local / python-private" (dengan pengaturan sementara PYTHONPATH = ~ / .local / python-private) sehingga skrip setup dapat menemukan mendistribusikan). Saya telah memindahkan skrip virtualenv ke direktori lain yang saya miliki di PATH saya dan mengeditnya sehingga modul distribusi dan virtualenv dapat ditemukan di sys.path. Tada: Saya tidak menginstal apa pun ke / usr, / usr / local atau paket situs pengguna saya, tetapi saya bisa menjalankan virtualenv di mana saja, dan di virtualenv itu saya mendapatkan pip.
sumber
Saya mengalami berbagai masalah (lihat di bawah) menginstal modul SSL yang ditingkatkan, bahkan di dalam virtualenv, di atas versi Python yang disediakan OS yang lebih lama, jadi sekarang saya gunakan
pyenv
.pyenv membuatnya sangat mudah untuk menginstal versi Python baru dan mendukung virtualenvs. Memulai jauh lebih mudah daripada resep untuk virtualenv yang tercantum dalam jawaban lain:
brew install pyenv
dan di Linux, gunakan pyenv-installerIni bekerja dengan sangat baik untuk mengisolasi versi "Python baru" dan virtualenv dari sistem Python. Karena Anda dapat dengan mudah menggunakan Python yang lebih baru (post 2.7.9), modul SSL sudah ditingkatkan, dan tentu saja seperti halnya pengaturan virtualenv modern yang Anda isolasi dari modul sistem Python.
Beberapa tutorial yang bagus:
pyenv global 3.6.1
(global ke pengguna saat ini) ataupyenv local 2.7.13
(lokal ke direktori saat ini).The
pyenv-virtualenv
Plugin sekarang dibangun di - jenispyenv commands | grep virtualenv
untuk memeriksa. Saya tidak akan menggunakan plugin pyenv-virtualenvwrapper untuk memulainya - lihat bagaimana Anda melanjutkan dengan pyenv-virtualenv yang lebih terintegrasi ke dalam pyenv, karena ini mencakup sebagian besar apa yang dilakukan virtualenvwrapper.pyenv
dimodelkanrbenv
(alat yang bagus untuk beralih versi Ruby) dan satu-satunya ketergantungannya adalah bash.pyvenv
- yaitu setara virtualenv yang merupakan bagian dari versi Python 3 terbaru, dan tidak menangani perpindahan versi PythonPeringatan
Dua peringatan tentang pyenv:
dash
, yang ada/bin/sh
di Ubuntu atau Debian.bash --login
menggunakan terminal), yang tidak selalu mudah dicapai dengan alat otomatisasi seperti Ansible .Karenanya pyenv terbaik untuk penggunaan interaktif, dan kurang bagus untuk server skrip.
Masalah modul SSL
Salah satu alasan untuk menggunakan
pyenv
adalah bahwa sering ada masalah dengan meningkatkan modul Python SSL ketika menggunakan versi Python yang disediakan sistem yang lebih lama:sumber
Anda dapat melakukan ini tanpa menginstal apa pun ke dalam python itu sendiri.
Anda tidak perlu sudo atau hak istimewa apa pun.
Anda tidak perlu menemukan versi terbaru dari
virtualenv
file tarAnda tidak perlu mengedit info versi dalam skrip bash untuk menjaga keadaan agar tetap terbaru.
Anda tidak perlu
curl
/wget
atautar
diinstal,pip
ataueasy_install
ini berfungsi untuk 2.7 serta untuk 3.X
Simpan yang berikut ke
/tmp/initvenv.py
:dari fungsi print_import masa depan
dan gunakan sebagai
mis. (jika Anda benar-benar membutuhkan
distribute
lapisan kompatibilitas untuksetuptools
)Harap dicatat bahwa, dengan versi python yang lebih lama, ini mungkin memberi Anda
InsecurePlatformWarning
s¹.Setelah Anda memiliki virtualenv Anda (nama misalnya
venv
) Anda dapat mengatur virtualenv lain dengan menggunakan yangvirtualenv
baru saja diinstal:virtualenvwrapper
Saya sarankan melihat virtualenvwrapper juga, setelah pengaturan satu kali:
dan aktivasi (dapat dilakukan dari skrip login Anda):
Anda dapat melakukan hal-hal seperti:
¹ Saya belum menemukan cara untuk menekan peringatan itu. Itu bisa diselesaikan di
pip
dan / ataurequest
, tetapi pengembang menunjuk satu sama lain sebagai penyebabnya. Saya mendapat rekomendasi, seringkali tidak realistis, untuk memutakhirkan versi python yang saya gunakan ke versi terbaru. Saya yakin ini akan merusak misalnya saya menginstal Linux Mint 17. Untungnyapip
cache paket, jadi Peringatan dibuat hanya sekali per paket instal.sumber
InsecurePlatformWarning
(yaitu peringatan jika Python lebih tua dari versi 2.7.9) dapat diperbaiki dengan menginstal paket tambahan pyopenssl, pyasn1, ndg-httpsclient dari PyPI. (Ini mendukung SSL, mendekode sertifikat, https via PyOpenSSL.) Tanpa protokol yang benar, itu benar-benar tidak cukup aman untuk mengunduh dan menjalankan kode apa pun.Ada instruksi bagus di situs resmi Virtualenv. https://pypi.python.org/pypi/virtualenv
Pada dasarnya apa yang saya lakukan, instal
pip
dengansudo easy_install pip
, kemudian digunakansudo pip install virtualenv
kemudian menciptakan lingkungan dengan:virtualenv my_env
(beri nama apa yang Anda inginkan), mengikuti yang saya lakukanvirtualenv --distribute my_env
:; yang diinstaldistribute
danpip
di virtualenv saya.Sekali lagi, ikuti instruksi di
virtualenv
halaman.Agak merepotkan, datang dari Ruby; P
sumber
Berikut adalah cara yang bagus untuk menginstal virtualenvwrapper (perbarui ini ).
Unduh virtualenv-1.11.4 (Anda dapat menemukan yang terbaru di sini ), Unzip, buka
terminal
Itu dia, sekarang Anda bisa menggunakan
mkvirtualenv env1
,lsvirtualenv
dllCatatan: Anda dapat menghapus
virtualenv-1.11.4
danvirtualenv-1.11.4.zip
dari folder Unduhan.sumber
Berita baiknya adalah jika Anda telah menginstal python3.4, pyvenv sudah diinstal. Jadi hanya
Sekarang dalam env virtual ini, Anda dapat menggunakan pip untuk menginstal modul untuk proyek ini.
Biarkan env virtual ini, adil
sumber