Virtualenv hebat: memungkinkan saya menyimpan sejumlah instalasi Python yang berbeda sehingga dependensi proyek yang berbeda tidak semuanya dilemparkan bersama ke dalam tumpukan bersama.
Tetapi jika saya ingin menginstal paket pada Windows yang dikemas sebagai installer .exe, bagaimana saya bisa mengarahkannya untuk menginstal ke dalam virtualenv? Sebagai contoh, saya punya pycuda-0.94rc.win32-py2.6.exe. Ketika saya menjalankannya, ia memeriksa registri, dan hanya menemukan satu Python26 untuk diinstal ke dalam, yang umum bahwa virtualenv saya didasarkan dari.
Bagaimana saya bisa mengarahkannya untuk menginstal ke dalam virtualenv?
python
windows
virtualenv
Ned Batchelder
sumber
sumber
Jawaban:
Ya kamu bisa. Yang kamu butuhkan adalah
Terkejut? Sepertinya installer biner untuk Windows yang dibuat dengan distutils menggabungkan .exe dengan .zip menjadi satu file .exe. Ubah ekstensi menjadi .zip untuk melihatnya sebagai file zip yang valid. Saya menemukan ini setelah membaca jawaban atas pertanyaan saya Di mana saya dapat mengunduh telur biner dengan psycopg2 untuk Windows?
MEMPERBARUI
Seperti dicatat oleh Tritium21 dalam jawabannya saat ini, Anda harus menggunakan pip bukan easy_install. Pip tidak dapat menginstal paket biner yang dibuat oleh distutils tetapi ia dapat menginstal paket biner dalam format roda baru . Anda dapat mengkonversi dari format lama ke yang baru menggunakan paket roda , yang harus Anda instal terlebih dahulu.
sumber
Saya tahu ini pertanyaan yang cukup lama, dan mendahului alat yang akan saya bicarakan, tetapi demi Google, saya pikir ini ide yang bagus untuk menyebutkannya. easy_install adalah domba hitam dari kemasan python. Tidak ada yang mau mengaku menggunakannya dengan panasnya pip baru. Selain itu, ketika memainkan trik registri akan bekerja paling baik untuk installer EXE non-standar (seseorang membuat sendiri installer daripada menggunakan distutils, dan memeriksa registri untuk jalur instalasi), sekarang ada Better Way (c) untuk installer EXE standar .
Format roda, diperkenalkan baru-baru ini pada posting ini, adalah pengganti untuk format telur, mengisi peran yang hampir sama. Format ini juga didukung oleh pip (alat yang sudah diinstal di virtualenv Anda).
jika karena alasan tertentu
pip install WHEELFILE
tidak berhasil, cobawheel install WHEELFILE
sumber
wheel install WHEELFILE
, jawab diedit untuk menunjukkan keberadaan itu. Men-debug masalah khusus untuk seseorang bukanlah hal sepele yang dilakukan dalam komentar SO.Saya akhirnya mengadaptasi skrip ( http://effbot.org/zone/python-register.htm ) untuk mendaftarkan instalasi Python di registri. Saya bisa memilih Python untuk menjadi yang Python di registri, jalankan installer Windows, kemudian mengatur kembali registri:
Jalankan skrip ini dengan Python yang ingin Anda daftarkan, dan itu akan dimasukkan ke dalam registri. Perhatikan bahwa pada Windows 7 dan Vista, Anda memerlukan hak istimewa Administrator.
sumber
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install dapat menginstal paket .exe selama mereka dibangun menggunakan target bdist_wininst distutils, yang mencakup banyak paket populer. Namun, ada banyak lainnya yang tidak (wxPython adalah salah satu yang saya perjuangkan)
sumber
Anda dapat menggunakan easy_install lingkungan untuk menginstal PyCUDA.
itu akan memberi Anda versi 0.94rc yang sama.
Pada Windows easy_install.exe akan berada di direktori Script.
sumber
Jika a
.msi
, Anda mungkin dapat menentukan opsi baris perintah menggunakanmsiexec
. Penginstal Python sendiri memungkinkanTARGETDIR
, tapi saya tidak yakin apakah distutils mem-bakes ini ke installer distribusi.Jika Anda menggunakan
.exe
, saya tidak berpikir ada cara yang bersih. Salah satu opsi adalah menggunakan program seperti 7Zip (atau winzip, dll) untuk secara langsung mengekstraksi konten exe, lalu salin folder relevan ke dalam folder paket situs virtual Anda. Sebagai contoh, jika saya mengekstrak "processing-0.5.2.win32-py2.5.exe", saya menemukan folder "PLATLIB \ processing" yang saya salin ke jalur virtualenv dan digunakan tanpa masalah runtime. (Aku tidak yakin itu selalu sesederhana itu.)sumber