Pipenv: Gunakan venv alih-alih virtualenv jika tersedia

Dibuat pada 23 Jan 2017  ·  38Komentar  ·  Sumber: pypa/pipenv

Saya ingin tahu apakah layak menggunakan venv jika tersedia daripada virtualenv . Itu juga akan melewatkan keharusan menginstal virtualenv di tempat pertama.

Komentar yang paling membantu

Saya mendesak @kennethreitz untuk mempertimbangkan kembali komentarnya di sini. Menggunakan python3 -m venv alih-alih virtualenv direkomendasikan oleh dokumentasi standar. Saya pribadi menunda menggunakan pipenv karena menggunakan virtualenv. Saya hanya menggunakan Python 3 dan hanya menggunakan venv saat ini.

Semua 38 komentar

saya rasa tidak, saya lebih suka menggunakan perintah virtualenv secara pribadi

Mungkinkah membuat kedua opsi itu hidup berdampingan? Dengan santai menelusuri sumbernya, saya tidak melihat sesuatu yang secara khusus digabungkan dengan Virtualenv kecuali perintah yang digunakan untuk membuat env. Virtualenv selalu dapat menjadi default, tetapi pengguna dapat (misalnya) meneruskan --venv untuk membuat .venv dengan python3 -m venv alih-alih virtualenv .

Sejujurnya saya hanya mengandalkan pipenv dan tidak akan peduli jika virtualenv atau venv telah digunakan, tetapi saya pikir kami dapat memanfaatkan bawaan jika tersedia.

Saya mendesak @kennethreitz untuk mempertimbangkan kembali komentarnya di sini. Menggunakan python3 -m venv alih-alih virtualenv direkomendasikan oleh dokumentasi standar. Saya pribadi menunda menggunakan pipenv karena menggunakan virtualenv. Saya hanya menggunakan Python 3 dan hanya menggunakan venv saat ini.

@bulletmark Sekarang Pipenv mendelegasikan hampir semua manajemen Virtualenv ke Pew, bahkan lebih sulit untuk beralih, tetapi ada rencana untuk Pew untuk mendukung venv (berdario/pew#67) jadi masih ada peluang. Jika Pew dapat membuatnya bekerja, akan jauh lebih mudah (dan setidaknya lebih masuk akal bagi saya) untuk mengimplementasikan dukungan venv di Pipenv.

@uranusjr terdengar hebat!

Saya pribadi tidak pernah menggunakan venv , oleh karena itu kekhawatiran saya terhadapnya. Aku yakin itu bagus.

Hal-hal bekerja dengan baik, sekarang. Tidak perlu mengubah hal-hal yang tidak rusak.

Saya akhirnya menemukan thread ini karena sistem saya rusak.

Jika Anda membuat lingkungan dengan virtualenv di Python 3.X, dan kemudian memutakhirkan ke Python 3.Y, virtualenv rusak karena Anda tahu lebih lama memiliki perpustakaan bersama yang dibutuhkan Python. Menggunakan venv Anda bisa menjalankan python3 -m venv --upgrade .

Ini akan menjadi fitur yang bagus.

Ini pasti akan menyenangkan dan terasa sejalan dengan arah Python

Tidak menggunakan venv (dan sebagai gantinya menggunakan virtualenv) adalah total showstopper bagi saya - saya tidak dapat menggunakan Pipenv. Saya tidak dapat menggunakan virtualenv karena perilakunya yang membuat frustrasi menyalin biner python namun bergantung pada lib bersama - seperti yang ditemukan dhouck di atas untuk ketidaksenangannya di atas. Ini merusak virtualenvs sepanjang waktu (setiap kali sistem python diperbarui, membiarkan biner menggantung), dan menyalin biner python tanpa manfaat sama sekali.

Jika pipenv adalah masa depan Python, seharusnya default menggunakan venv di Python 3 (dan memperingatkan saat tidak menggunakannya). Ini dibangun ke dalam Python 3, dan ini adalah alat yang direkomendasikan. Sangat aneh bahwa Pipenv sekarang juga merupakan alat yang direkomendasikan tetapi tidak menggunakan venv.

venv secara alami menjadi bagian dari Python itu sendiri memiliki akses ke internal Python yang berarti ia dapat melakukan hal-hal dengan cara yang benar dengan peretasan yang jauh lebih sedikit. Misalnya, virtualenv harus menyalin biner Python interpreter ke dalam lingkungan virtual untuk mengelabuinya agar berpikir itu terisolasi, sedangkan venv hanya dapat menggunakan file konfigurasi yang dibaca oleh biner Python di lokasi normalnya untuk mengetahui itu seharusnya bertindak seperti berada di lingkungan virtual. Jadi venv dapat dianggap virtualenv dilakukan dengan benar, dengan restu dan dukungan dari pengembang Python.

Sumber: https://www.reddit.com/r/learnpython/comments/4hsudz/pyvenv_vs_virtualenv/

Saya sudah mulai berdario/pew#173, tetapi tidak punya banyak waktu untuk membuat kemajuan. Seperti disebutkan di atas, Pipenv akan secara otomatis mendukung ini setelah Pew melakukannya. Saya ingin bantuan jika ada yang tertarik membawa venv ke Pipenv. Masalah utama saat ini adalah membuat tes lulus.

Pembaruan cepat pada dukungan venv: Itu tidak akan terjadi, setidaknya dalam waktu dekat. venv sama sekali tidak cukup baik untuk mewujudkannya. Jika Anda benar-benar peduli tentang ini, pergilah ke pelacak bug Python dan bantulah. Jika tidak, tetap pada virtualenv .

venv adalah alat yang direkomendasikan untuk Python, dan itu tidak rusak, seperti virtualenv (re: menyalin biner python lalu rusak ketika python libs memperbarui). Bug yang Anda tautkan adalah tentang menggabungkan venv dan virtualenv, bukan yang kami minta?

Sayangnya, sangat umum bagi alat untuk membangun virtualenv. Travis, misalnya, menggunakan virtualenv untuk membuat lingkungan build untuk Anda, seperti yang disebutkan oleh reporter asli. Ini juga merupakan dasar dari Pipsi, yang jika salah satu cara yang disarankan untuk menginstal Pipenv. Jika venv tidak dapat bekerja dengan baik di dalamnya. Itu ada di banyak tempat tanpa Anda sadari. Dukungan Venv akan setengah rusak dan menggigit Anda dengan cara yang tidak terduga jika tidak dapat bekerja dengan baik dengan virtualenv.

Saya mengerti itu, tetapi pada titik ini Pipenv direkomendasikan, dan venv direkomendasikan, dan mereka agak berkonflik. Ini adalah keadaan yang sangat aneh.

Saya sangat setuju itu dalam keadaan yang aneh, itu sebabnya saya mencoba untuk memperbaikinya :) Saya tidak mengatakan itu tidak akan diperbaiki, tetapi perlu perubahan hulu terjadi terlebih dahulu, dan tidak ada yang bisa saya lakukan sampai mereka terjadi. Saya memposting tautan bukan sebagai alasan untuk berhenti mengerjakannya, tetapi untuk memberi tahu orang-orang di mana harus berusaha terlebih dahulu untuk membantu memperbaiki situasi ini.

Mungkin tidak terlalu gila untuk membiarkan masalah ini tetap terbuka?

Ini adalah masalah bangku, bukan masalah pipenv.

venv tidak cukup baik untuk mewujudkannya. Jika Anda benar-benar peduli tentang ini, pergilah ke pelacak bug Python dan bantulah.

Ini bukan masalah venv, tapi virtualenv. Saya telah memposting beberapa penjelasan di bawah pelacak masalah.
cc @uranusjr

Ada kata-kata sekitar ->
Gunakan venv untuk membuat virtualenv terlebih dahulu, lalu jalankan pipenv install . Sebagai contoh:

mkdir -p /tmp/try
cd /tmp/try
python3 -m venv .venv
pipenv --venv  # /tmp/try/.venv
pipenv install xxx

🙈

Hanya sebuah catatan:

Solusi di atas sebagian besar berfungsi, tetapi pipenv run ... gagal untuk saya karena tidak ada activate_this.py bawah .venv/bin . Jika masalah 21496 dapat dipercaya, tidak ada rencana untuk menambahkan file ini ke venv. Jadi, bahkan jika pew memperbaiki ini, pipenv kemungkinan masih memiliki masalah.

Menggunakan virtualenv, menggunakan modul system tk di macOS tidak mungkin. Tetapi menggunakan venv, itu mungkin.
Saya sangat ingin menggunakan venv dengan pipenv (mungkin opsional).

Lihat juga: #1416

Tidak terdengar sinis, tetapi saya sangat ingin seseorang benar-benar menulis kode untuk mendukung ini jika mereka benar-benar peduli. Saya telah bertemu banyak orang yang mengatakan bahwa mereka merasa "kuat" tentang hal ini, tetapi sejauh yang saya tahu, hanya saya yang benar-benar melakukan sesuatu. Dan saya gagal. Ini tidak sesederhana yang Anda pikirkan. Jika Anda pikir Anda bisa melakukan lebih baik, lakukan sesuatu. Jika Anda tidak mau, silakan ambil apa yang bisa Anda dapatkan.

(kenneth dan saya sendiri dan mungkin erin dan nate juga mencoba melakukan ini dengan venv jauh lebih awal dalam proyek dan juga gagal karena alasan kompatibilitas)

Ini akan menyenangkan, semua orang setuju. Saya ingin melihatnya bekerja di seluruh platform dan versi python.

Saya ingin menunjukkan alasan lain mengapa venv mungkin akan menjadi pilihan yang lebih baik daripada virtualenv:

salah satu aspek yang lebih buruk dari implementasi virtualenv adalah ia harus memiliki salinan sendiri dari modul situs, yang digunakan untuk semua virtualenvs terlepas dari versi Python mana mereka dibuat.
-- dari https://github.com/pypa/virtualenv/issues/228#issuecomment -4165148

Ini berarti, misalnya, rlcompleter dinonaktifkan secara default dan menurut saya itu adalah kerugian kegunaan yang sangat besar.

Selain itu karena ini adalah masalah yang berdampak pada banyak pengguna Anda, saya sarankan untuk tetap membukanya sampai masalah teratasi, bahkan jika Anda menunggu beberapa perubahan di hulu terjadi.

Lagi. Kami tahu itu akan lebih baik. Itu tidak mungkin. Apa yang menurut Anda memiliki dampak yang lebih negatif, benar-benar merusak fungsionalitas untuk sebagian besar pengguna, atau membuat beberapa pengguna harus mengaktifkan fitur readline?

Saya yakin ini tidak nyaman, juga tidak nyaman karena sepertinya hanya ada orang yang menuntut ini dan tidak ada orang yang akan menawarkan implementasi yang berhasil. Kami telah mencoba. Sampai sesuatu berubah secara drastis, kami tidak memiliki rencana untuk mendukung venv dan oleh karena itu tidak ada rencana untuk membuka masalah ini.

@techalchemy Jika saya mengerti dengan benar, pypa/virtualenv#1095 adalah tempat yang tepat untuk membahas ini?

Sepertinya benar, saya melihat tox memiliki solusi, jadi mungkin itu akan berhasil jika seseorang memindahkannya

bangku gereja! diskusi apa.. jika hal bangku ini tidak terlalu penting, apakah mungkin untuk menjatuhkannya bersama dengan virtualenv dan membiarkan pipenv, venv, dan python berjalan beriringan, karena mereka semua merekomendasikan satu sama lain?

Manajemen ketergantungan/solusi lingkungan virtual untuk python terlalu banyak medan liar saat ini, dan beberapa pengorbanan perlu dilakukan, imho.

Hal ini dapat menakuti banyak orang yang belum siap untuk berhenti menggunakan virtualenv, tetapi dapat direncanakan untuk salah satu rilis besar yang akan datang (jika memungkinkan secara teknis).. Perubahan tidak dapat dihindari, hanya masalah waktu.

@doganmeh Kami dapat meninggalkan virtualenv sama sekali, membangun produk yang setara untuk hanya mendukung Python 3.3 atau lebih tinggi, tetapi saya kira akan lebih mudah untuk membuat proyek lain itu.

Hanya sebuah catatan:

Solusi di atas sebagian besar berfungsi, tetapi pipenv run ... gagal untuk saya karena tidak ada activate_this.py bawah .venv/bin . Jika masalah 21496 dapat dipercaya, tidak ada rencana untuk menambahkan file ini ke venv. Jadi, bahkan jika pew memperbaiki ini, pipenv kemungkinan masih memiliki masalah.

Apakah itu benar-benar perlu? Setelah Anda membuat lingkungan virtual dengan venv, Anda tidak perlu mengaktifkannya untuk menggunakannya. Anda cukup menjalankan menggunakan biner python dari direktori venv/bin.

FWIW, ini terkait (dan apa yang membawa saya ke sini): http://matplotlib.org/faq/osx_framework.html

Dalam virtualenv , build non-framework digunakan bahkan ketika lingkungan dibuat dari build framework ( virtualenv bug #54 , virtualenv bug #609 ).

Solusinya adalah tidak menggunakan virtualenv, melainkan venv stdlib, yang menyediakan fungsionalitas serupa tetapi tanpa menunjukkan masalah ini.

Menjatuhkan dukungan Python 2.7/virtualenv kepada saya tidak terdengar seperti ide yang sangat buruk, jika itu memungkinkan pipenv untuk mengandalkan stdlib dari versi Python yang dukungannya tidak akan kedaluwarsa. Selama itu tidak merusak bagian lain dari rantai alat pipenv yang tidak mudah diperbaiki oleh pengelola. Mungkin bahkan memindahkan dukungan 2,7 ke cabang/paket terpisah?

Saya ingin dapat memberikan kontribusi kode yang sebenarnya, tapi saya tidak berpikir saya memiliki pengalaman yang diperlukan untuk melakukannya atau waktu :frown: Yang terbaik yang bisa saya lakukan adalah menambahkan diskusi saat ini.

menambahkan suara saya di sini; saya baru saja menemukan ini karena masalah yang sama dengan @dmtucker .

Saat ini saya beralih untuk mengabaikan pipenv sepenuhnya untuk proyek ini ketika di mac saya, dan membuat lingkungan dengan tangan dengan venv untuk saat ini.

+1 untuk menggunakan venv.
virtualenv memiliki banyak bug yang tidak dapat diperbaiki .
pipenv sangat berguna di Windows 10 dengan Python 3.7 dari Windows Store (virtualenv bug#1362 )

virtualenv pindah ke model venv - lihat https://github.com/pypa/virtualenv/issues/1366 , yang akan menghasilkan pyvenv.cfg dan semua hal baik, jadi ini harus diselesaikan melalui itu.

---------- Pesan yang diteruskan ---------
Dari: Dan Ryan [email protected]
Tanggal: Sen, 26 Nov 2018, 14:39
Subjek: Re: [pypa/pipenv] Gunakan venv alih-alih virtualenv jika tersedia (#15)
Kepada: pypa/pipenv [email protected]
Cc: Berlangganan [email protected]

Sepertinya benar, saya melihat tox memiliki solusi, jadi mungkin itu akan berhasil jika
seseorang memindahkannya


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pypa/pipenv/issues/15#issuecomment-441533872 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/AqyQvrs-RNNTb1YhxaDCWDLpRxrZLKoxks5uy4ydgaJpZM4Lqk2f
.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat