paramiko<2
eksplisit untuk mencegah lingkungan orang dari peningkatan / kerusakan yang tidak terduga, beberapa waktu lalu.extras_require
tidak mengizinkan Anda mengganti paket/versi yang sama seperti yang ditentukan dalam install_requires
, jadi kami tidak dapat melakukan pip install fabric[paramiko-2]
atau apa pun.setup.py
- tetapi itu juga bukan obat mujarab karena tidak berfungsi dengan roda atau metode instalasi non-sdist lainnyafabric-paramiko2
meskipun itu adalah opsi lain.paramiko<3
di rilis Fabric selanjutnya, sehingga orang-orang dapat terus mendapatkan perbaikan bug/keamanan/dll dari baris Paramiko 2.xCrypto.atfork
di decorators.py
(lihat #1460) dan pastikan tidak ada bagasi PyCrypto lainnya yang tersisaMungkin pertimbangkan keadaan perantara, di mana untuk satu atau dua rilis, fabric
setup.py
memungkinkan paramiko>=2
dan paramiko<2
, dan orang-orang akan mendapatkan cryptography
secara default, tetapi dapat memaksa versi lama PyCrypto
jika mereka membutuhkannya. Setelah dibakar sedikit, Anda dapat memindahkan setup.py
untuk meminta paramiko>=2
.
Tidak yakin saya akan membuat Fabric 1.x membutuhkan paramiko>=2, berencana menyimpannya untuk Fabric 2.x. Tergantung pada penyerapan Fabric 2.x setelah keluar, saya kira.
Anda benar bahwa kembali ke melepas pin "Saya tidak peduli, paramiko 1 atau 2 tidak apa-apa" masih dapat dipecahkan dengan membiarkan orang menurunkan versi Paramiko mereka secara manual. pinning sebagian besar merupakan upaya untuk menghindari banjir laporan "onoz u break my build". Kami sudah mendapatkan beberapa, tapi tidak satu ton, apakah itu karena pin saya atau tidak adalah dugaan siapa pun.
@bitprophet FWIW, saya punya beberapa dataz! Selama 2 minggu terakhir (jadi ini termasuk beberapa hari sebelum paramiko 2.0 benar-benar dirilis), berikut adalah versi Paramiko yang paling banyak diunduh dari PyPI:
| Versi | Unduhan |
| --- | --- |
| 1.16.0 | 411903 |
| 2.0.0 | 308131 |
| 1.17.0 | 77360 |
| 1.15.2 | 47677 |
| 1.15.1 | 23893 |
Bagi saya jumlah pemasangan 2.0 yang sangat besar ini menunjukkan bahwa itu mungkin aman, jadi menghapus ikatan <2
tidak diperlukan, bagi kebanyakan orang itu akan berfungsi dengan baik (atau mudah diperbaiki), dan bagi mereka yang bisa 't hanya melakukan pip install paramiko<2
sebelum pip install fabric
akan memperbaikinya.
Apakah mungkin setidaknya menggunakan penanda lingkungan untuk memberi tahu fabric agar menggunakan paramiko>2 untuk PyPy setidaknya, di mana status quo saat ini adalah bahwa fabric tidak akan dipasang?
@alex terlambat, maksud Anda "menghapus <2
terikat aman"? (bukannya "tidak perlu") :D
@Julian Saya berasumsi maksud Anda beberapa baris "ubah install_requires
berdasarkan juru bahasa saat ini"? Tidak menentang begitu saja. (Meskipun peretasan IIRC seperti itu berhenti bekerja dengan roda, jadi kami mulai menghindarinya ...?)
Uhhh, ya, maksudku aman.
@bitprophet untuk roda Anda melakukan hal yang sama, hanya di extras_require
dengan penanda lingkungan.
Pada dasarnya Anda menggosok perut @dstufft dan jin muncul.
(Contoh yang lebih serius: https://github.com/Julian/jsonschema/blob/master/setup.py#L25 tetapi Anda mengganti python_version
dengan python_interpreter
untuk mengirimkannya sebagai gantinya).
Saya akan mencoba memasukkannya ke dalam PR sehingga Anda dapat melihat tampilannya, kecuali jika Anda akan mewujudkannya?
Oh rapi, saya hanya samar-samar ingat belajar tentang hal itu beberapa waktu lalu. Jelas kemudian lupa. Saya benar-benar kecewa dengan melakukan itu jika itu akan membantu beberapa orang & tidak merugikan mayoritas. PR akan dihargai.
Re: masalah luar, saya pikir pada titik ini saya turun dengan menabrak pin ke <3
di Fabric 1.12+ (di samping pembersihan Crypto lain yang disebutkan sebelumnya, meskipun mereka harus menjadi persyaratan kecuali saya mau lakukan paramiko>=2,<3
, yang kurang saya sukai. Akan melihat betapa buruknya keadaan ketika saya menyodok ini dan mencoba memastikan cabang Fabric yang sama lulus tes di dua venv terpisah, satu dengan Crypto dan Paramiko 1, lainnya tanpa Crypto dan Paramiko 2)
Halo kawan-kawan
Tambahan kecil untuk diskusi ini:
Kami menggunakan Macports untuk menginstal port Fabric yang bergantung pada port Paramiko di workstation macOS kami.
Namun baru-baru ini Macports memutuskan untuk memutakhirkan Paramiko dari versi 1.16.0 ke 2.0.1 dan sekarang kami menjalankan Fabric, itu tidak lagi berfungsi:
➜ fab deploy
Traceback (most recent call last):
File "/opt/local/bin/fab", line 5, in <module>
from pkg_resources import load_entry_point
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2927, in <module>
<strong i="13">@_call_aside</strong>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2913, in _call_aside
f(*args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 637, in _build_master
return cls._build_from_requirements(__requires__)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 829, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'paramiko<2.0,>=1.10' distribution was not found and is required by Fabric
Saya menyiasatinya dengan menurunkan Paramiko ke versi 1.16.0 menggunakan Macports, yang agak rumit untuk dilakukan secara manual, tetapi akhirnya berhasil lagi.
Saya pikir ini adalah kesalahan dari Macports, mereka harus menunggu untuk meng-upgrade Paramiko di pohon mereka sampai Fabric kompatibel.
Tapi bagaimanapun, alangkah baiknya jika versi baru dari Fabric dapat dirilis dengan dukungan untuk Paramiko > 2.0 sehingga kita bisa mendapatkan semuanya untuk bekerja kembali menggunakan Macports dengan versi terbaru dari semua port.
Grump, itu menjengkelkan - terima kasih atas beritanya, @hostep. (Tidak mencoba untuk menjadi snarky, tetapi - juga terkejut MacPorts masih digunakan, semua orang yang saya kenal beralih ke Homebrew bertahun-tahun yang lalu. Pengingat yang baik bahwa "top of mind" != "satu-satunya permainan di kota" kurasa :))
Saya mengeluarkan 1,12 kecil dengan iseng tadi malam (pengingat bagus lainnya untuk diri sendiri: berhenti menggunakan nomor versi literal ketika mendiskusikan peta jalan - katakan saja "rilis fitur yang akan datang" atau dll) dan tidak membuat perubahan ini, tetapi masih ingin melakukannya segera, jadi mungkin rilis kecil berikutnya sebagai gantinya.
FWIW, kami (FreeBSD) mengalami masalah yang sama dan harus membuat port dan paket paramiko1 untuk py-fabric. Lihat juga:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213893
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214379
TLDR: Ketergantungan <= dan == sangat menyakitkan/mengganggu dan menciptakan lebih banyak masalah daripada yang seharusnya dipecahkan.
Ada jauh lebih sedikit rasa sakit bagi pengguna hilir dan pembuat paket/porter ketika hulu hanya secara proaktif menguji versi terbaru dari dependensi mereka (dalam pengembangan, sebelum rilis adalah waktu terbaik untuk melakukan ini) dan tidak meresepkan atau membatasi versi ketergantungan kecuali ada versi yang secara eksplisit merusak kompatibilitas.
Bahkan dalam kasus itu batasannya hanya sementara, dan hanya jika rilis dibuat saat rusak, dan hanya saat pembuat dependensi diberi tahu dan sampai perbaikan dilakukan.
Bonus dari metode ini adalah mengajarkan hulu (dan hulu dari hulu) bahwa keputusan yang mereka buat benar-benar memengaruhi pengguna mereka dalam praktik (bukan hanya secara teori), dan dengan pengetahuan ini, semoga meminimalkan kemungkinan itu terjadi lagi di masa depan.
Untuk menambahkan sedikit lebih banyak info tentang masalah Macports, tampaknya sudah diperbaiki karena mereka menambahkan tambalan saat menginstal yang mengubah persyaratan untuk Paramiko dari <2.0
menjadi <3.0
Kami sekarang menjalankan Fabric v1.12.0 & Paramiko v2.0.2 di workstation macOS kami dan tidak ada masalah dengan ini.
@hostep Terima kasih telah menyoroti itu
@hostep Memang ada kalanya saya mengganti spesifikasi *_requires
(dari <=
/ ==
ke >=
atau ''
) di FreeBSD port, jika rangkaian pengujian telah lulus dengan versi dependensi yang lebih baru. Namun ini bergantung pada pengujian yang luar biasa sehingga bisa berisiko, dan meskipun kami adalah hilir Fabric, kami juga tidak suka merusak lingkungan pengguna (hilir) kami :)
Lebih banyak pembaruan nomor ... ikhtisar 6 bulan terakhir:
dan 2 minggu terakhir:
Paramiko 2.0.x sekarang dengan mudah setengah dari semua unduhan. Dan saya ingin tahu berapa banyak dari 50% lainnya karena tiket ini tidak digabung :) akan segera diketahui!
Pikir saya akan mengeksekusi ini dan mengeluarkannya sebagai Fab 1.13.0.
Meninjau kembali apa yang extras_require
tampaknya hanya diperlukan jika saya ingin membatasi perubahan ke PyPy; pada titik ini saya hanya melakukan "izinkan Paramiko <3" secara grosir ...
Ada PyPI
Gah, tentu saja saya lupa tiket saudara, # 1462! 1.13.1 dalam perjalanan...EDIT: dan, digabung/dirilis.
Hore!
Pada 9 Desember 2016 20:14, "Jeff Forcier" [email protected] menulis:
Gah, tentu saja saya lupa tiket saudara, # 1462
https://github.com/fabric/fabric/pull/1462 ! 1.13.1 dalam perjalanan...
—
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/fabric/fabric/issues/1461#issuecomment-266111875 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/AAUIXlbJBlS0po_zKgQsUp7-y7I7WgbTks5rGbajgaJpZM4ITeNm
.
Komentar yang paling membantu
Grump, itu menjengkelkan - terima kasih atas beritanya, @hostep. (Tidak mencoba untuk menjadi snarky, tetapi - juga terkejut MacPorts masih digunakan, semua orang yang saya kenal beralih ke Homebrew bertahun-tahun yang lalu. Pengingat yang baik bahwa "top of mind" != "satu-satunya permainan di kota" kurasa :))
Saya mengeluarkan 1,12 kecil dengan iseng tadi malam (pengingat bagus lainnya untuk diri sendiri: berhenti menggunakan nomor versi literal ketika mendiskusikan peta jalan - katakan saja "rilis fitur yang akan datang" atau dll) dan tidak membuat perubahan ini, tetapi masih ingin melakukannya segera, jadi mungkin rilis kecil berikutnya sebagai gantinya.