Apakah ada yang menemui peringatan ini saat menjalankan python setup.py install
paket PyPI?
install_requires
mendefinisikan apa yang dibutuhkan paket. Banyak paket PyPI memiliki opsi ini. Bagaimana ini bisa menjadi "opsi distribusi yang tidak diketahui"?
Jawaban:
python setup.py
menggunakan distutils yang tidak mendukung install_requires. setuptools melakukannya, juga mendistribusikan (penggantinya), dan pip (yang menggunakan keduanya) do. Tapi sebenarnya Anda harus menggunakannya. Yaitu panggilan setuptools melaluieasy_install
perintah ataupip install
.Cara lain adalah dengan mengimpor setup dari setuptools di setup.py Anda, tetapi ini tidak standar dan membuat semua orang yang ingin menggunakan paket Anda harus sudah menginstal setuptools.
sumber
pip
, lalu bagaimana cara menjalankansetup.py
file jika saya hanya ingin membuat ekstensi di tempat?python setup.py sdist
dan menginstalnyapip install resulting_package.tar.gz
. Anda juga dapat menggunakanpip install -e
untuk menginstal langsung dari sumber, tetapi saya selalu lebih suka menginstal dari paket atau dari repositori secara langsung ..pip install pendulum==1.4.4
. Menjalankanpip install setuptools --upgrade
menghapus kesalahan.Ini adalah hasil pertama pencarian google saya, tetapi tidak ada jawaban. Saya menemukan bahwa mengupgrade setuptools menyelesaikan masalah untuk saya (dan pip untuk tindakan yang baik)
Semoga ini membantu orang berikutnya untuk menemukan tautan ini!
sumber
pip3 install neovim-remote
.)PERHATIAN ! PERHATIAN ! Jawaban tidak sempurna di depan. Untuk mendapatkan "memo terbaru" tentang status pengemasan di dunia Python, baca esai yang cukup mendetail ini .
Saya baru saja mengalami masalah ini ketika mencoba membangun / menginstal yang memungkinkan. Masalahnya tampaknya distutils benar - benar tidak mendukung install_requires. Setuptools harus menambal monyet distutils dengan cepat, tetapi tidak, mungkin karena rilis terakhir setuptools adalah 0.6c11 dari 2009, sedangkan distutils adalah proyek inti Python.
Jadi, bahkan setelah menginstal setuptools-0.6c11-py2.7.egg secara manual, running setup.py hanya mengambil distutils dist.py, dan bukan yang dari site-packages / setuptools /.
Juga petunjuk dokumentasi setuptools untuk menggunakan ez_setup dan bukan distutils.
Akan tetapi, setuptools itu sendiri disediakan oleh distribusikan saat ini, dan jenis setup () itu mendukung install_requires.
sumber
setuptools
dandistribute
sedang dalam proses penggabungan kembali, tetapi penggabungan belum selesai (saya akan memperbarui esai ini segera setelah itu berubah). " Adakah yang tahu apa keadaan sejauh ini pada 2019? Dengan tanggal Akhir Masa Pakai Python 2.7 yang semakin dekat, banyak paket python akan dalam proses pembaruan & pengemasan ulang.Saya menggunakan Mac dengan python 2.7.11. Saya telah bermain-main dengan membuat proyek yang sangat sederhana dan mudah, di mana satu-satunya persyaratan saya adalah saya dapat menjalankan
python setup.py install
, dan telahsetup.py
menggunakan perintah pengaturan, idealnya dari distutils. Secara harfiah tidak ada impor atau kode lain selain dari kwargssetup()
selain yang saya catat di sini.Saya mendapatkan kesalahan saat impor untuk
setup.py
file saya adalah:Saat saya menggunakan ini, saya mendapatkan peringatan seperti
Jika saya mengubah impor (dan tidak ada yang lain ) ke yang berikut:
Peringatan itu hilang.
Perhatikan bahwa saya tidak menggunakan
setuptools
, hanya dengan mengimpornya akan mengubah perilakunya sehingga tidak lagi mengeluarkan peringatan. Bagi saya, ini adalah penyebab perbedaan yang sangat membingungkan di mana beberapa proyek yang saya gunakan memberikan peringatan tersebut, dan beberapa lainnya tidak.Jelas, beberapa bentuk tambalan monyet sedang terjadi, dan itu dipengaruhi oleh apakah impor itu dilakukan atau tidak. Ini mungkin bukan situasi untuk semua orang yang meneliti masalah ini, tetapi untuk lingkungan sempit tempat saya bekerja, inilah jawaban yang saya cari.
Ini konsisten dengan komentar (komunitas) lain, yang mengatakan bahwa distutils harus monkeypatch setuptools, dan bahwa mereka mengalami masalah saat menginstal Ansible. Ansible tampaknya mencoba mengizinkan penginstalan tanpa alat penyiapan di masa lalu, lalu kembali lagi.
https://github.com/ansible/ansible/blob/devel/setup.py
Banyak hal yang mengudara ... tetapi jika Anda mencari jawaban sederhana untuk proyek sederhana, Anda mungkin sebaiknya mengimpor alat setup.
sumber
import setuptools
juga secara ajaib menyelesaikan masalah bagi saya di ubuntu 16.04 dengan python 3.5.Ini adalah peringatan dari distutils, dan merupakan tanda bahwa Anda belum menginstal alat setup. Menginstalnya dari http://pypi.python.org/pypi/setuptools akan menghapus peringatan tersebut.
sumber
Ini akan menginstal header yang hilang. Itu memecahkan masalah saya
sumber
Kesimpulannya :
distutils
tidak mendukunginstall_requires
atauentry_points
,setuptools
tidak.ubah
from distutils.core import setup
di setup.py kefrom setuptools import setup
atau refactor setup.py Anda untuk menggunakandistutils
fitur saja .Saya datang ke sini karena saya tidak menyadari
entry_points
itu hanyasetuptools
fitur.Jika Anda di sini ingin berubah
setuptools
menjadidistutils
seperti saya:install_requires
dari setup.py dan hanya menggunakan requirements.txt denganpip
entry_points
kescripts
( doc ) dan refactor semua modul yang mengandalkanentry_points
menjadi skrip lengkap dengan shebang dan titik masuk.sumber
Sejauh yang saya tahu, ini adalah bug di setuptools di mana ia tidak menghapus opsi khusus setuptools sebelum memanggil ke kelas dasar di perpustakaan standar: https://bitbucket.org/pypa/setuptools/issue/29 / hindari-userwarnings-emitted-when-calling
Jika Anda memiliki unconditional
import setuptools
di Andasetup.py
(seperti yang seharusnya Anda lakukan jika menggunakan opsi khusus setuptools), maka fakta bahwa skrip tidak gagalImportError
menunjukkan bahwa setuptools sudah diinstal dengan benar.Anda dapat membungkam peringatan sebagai berikut:
Hanya melakukan hal ini jika Anda menggunakan impor tanpa syarat yang akan gagal sama sekali jika setuptools tidak terpasang :)
(Saya melihat perilaku yang sama ini di checkout dari repo setuptools pasca-merger, itulah sebabnya saya yakin ini adalah bug setuptools daripada masalah konfigurasi sistem. Saya berharap distribusi pra-penggabungan akan memiliki masalah yang sama)
sumber
Sekarang saya telah melihat ini di alat lama menggunakan Python2.7, di mana sebuah build (seperti Dockerfile) menginstal dependensi yang tidak disematkan, misalnya pytest. PyTest telah menghentikan dukungan Python 2.7, jadi Anda mungkin perlu menentukan versi <rilis paket baru.
Atau gigih peluru dan ubah aplikasi itu ke Python 3 jika itu memungkinkan.
sumber