_Tiket asli http://projects.scipy.org/numpy/ticket/1841 pada 2011-05-25 oleh pengguna trac ohe, ditetapkan ke tidak diketahui._
Halo yang disana,
Di virtualenv, dengan python v2.7.1, saya tidak dapat menginstal numpy melalui arahan install_requires dari setuptools / distribut.
from setuptools import setup
setup(...
install_requires=['numpy'],
...)
A python setup.py install
memberi saya traceback berikut:
running install
running bdist_egg
running egg_info
writing requirements to UNKNOWN.egg-info/requires.txt
writing UNKNOWN.egg-info/PKG-INFO
writing top-level names to UNKNOWN.egg-info/top_level.txt
writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-intel/egg
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
creating build/bdist.macosx-10.6-intel
creating build/bdist.macosx-10.6-intel/egg
creating build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/requires.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/top_level.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/UNKNOWN-0.0.0-py2.7.egg' and adding 'build/bdist.macosx-10.6-intel/egg' to it
removing 'build/bdist.macosx-10.6-intel/egg' (and everything under it)
Processing UNKNOWN-0.0.0-py2.7.egg
Copying UNKNOWN-0.0.0-py2.7.egg to /Users/olivier/tc/karmatest/lib/python2.7/site-packages
Adding UNKNOWN 0.0.0 to easy-install.pth file
Installed /Users/olivier/tc/karmatest/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7.egg
Processing dependencies for UNKNOWN==0.0.0
Searching for numpy
Reading http://pypi.python.org/simple/numpy/
Reading http://numpy.scipy.org
Reading http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103
Reading http://numeric.scipy.org
Best match: numpy 1.6.0
Downloading http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/numpy-1.6.0.tar.gz/download
Processing download
Running numpy-1.6.0/setup.py -q bdist_egg --dist-dir /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/egg-dist-tmp-Zr2lMr
Running from numpy source directory.Warning: distutils distribution has been initialized, it may be too late to add a subpackage commandWarning: distutils distribution has been initialized, it may be too late to add a subpackage fcompilernon-existing path in '/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils': 'site.cfg'
Warning: distutils distribution has been initialized, it may be too late to add a subpackage distutilsWarning: distutils distribution has been initialized, it may be too late to add a subpackage testingWarning: distutils distribution has been initialized, it may be too late to add a subpackage f2pyWarning: distutils distribution has been initialized, it may be too late to add an extension _sortWarning: distutils distribution has been initialized, it may be too late to add an extension multiarrayWarning: distutils distribution has been initialized, it may be too late to add an extension umathWarning: distutils distribution has been initialized, it may be too late to add an extension scalarmathWarning: distutils distribution has been initialized, it may be too late to add an extension _dotblasWarning: distutils distribution has been initialized, it may be too late to add an extension umath_testsWarning: distutils distribution has been initialized, it may be too late to add an extension multiarray_testsWarning: distutils distribution has been initialized, it may be too late to add a subpackage coreWarning: distutils distribution has been initialized, it may be too late to add an extension _compiled_baseWarning: distutils distribution has been initialized, it may be too late to add a subpackage libWarning: distutils distribution has been initialized, it may be too late to add a subpackage oldnumericWarning: distutils distribution has been initialized, it may be too late to add an extension _capiWarning: distutils distribution has been initialized, it may be too late to add a subpackage numarrayWarning: distutils distribution has been initialized, it may be too late to add an extension fftpack_liteWarning: distutils distribution has been initialized, it may be too late to add a subpackage fftWarning: distutils distribution has been initialized, it may be too late to add an extension lapack_liteWarning: distutils distribution has been initialized, it may be too late to add a subpackage linalgWarning: distutils distribution has been initialized, it may be too late to add an extension mtrandWarning: distutils distribution has been initialized, it may be too late to add a subpackage randomWarning: distutils distribution has been initialized, it may be too late to add a subpackage maWarning: distutils distribution has been initialized, it may be too late to add a subpackage matrixlibWarning: distutils distribution has been initialized, it may be too late to add a subpackage compatWarning: distutils distribution has been initialized, it may be too late to add a subpackage polynomialWarning: distutils distribution has been initialized, it may be too late to add a subpackage docWarning: distutils distribution has been initialized, it may be too late to add a subpackage numpyCould not locate executable f95
Could not locate executable f90
Could not locate executable f77
Could not locate executable xlf90
Could not locate executable xlf
Could not locate executable ifort
Could not locate executable ifc
Could not locate executable g77
Found executable /usr/local/bin/gfortran
_configtest.c:1: warning: conflicting types for built-in function ‘exp’
_configtest.c:1: warning: conflicting types for built-in function ‘exp’
_configtest.c:1:20: error: Python.h: No such file or directory
_configtest.c:1:20: error: Python.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-//ccLgEqLk.out
_configtest.c:1:20: error: Python.h: No such file or directory
_configtest.c:1:20: error: Python.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-//ccLgEqLk.out
Traceback (most recent call last):
File "setup.py", line 4, in <module>
install_requires=['numpy']
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
dist.run_commands()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/install.py", line 76, in run
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/install.py", line 104, in do_egg_install
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 211, in run
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 427, in easy_install
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 478, in install_item
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 519, in process_distribution
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 563, in resolve
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 799, in best_match
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 811, in obtain
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 446, in easy_install
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 476, in install_item
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 655, in install_eggs
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 930, in build_and_install
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 919, in run_setup
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 62, in run_setup
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 105, in run
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 64, in <lambda>
File "setup.py", line 196, in <module>
File "setup.py", line 189, in setup_package
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/core.py", line 186, in setup
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
dist.run_commands()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/bdist_egg.py", line 167, in run
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/egg_info.py", line 8, in run
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 152, in run
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 169, in build_sources
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 328, in build_extension_sources
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 385, in generate_sources
File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 410, in generate_config_h
File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 41, in check_types
File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 271, in check_types
SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.
/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py:251: RuntimeWarning: Parent module 'numpy.distutils' not found while handling absolute import
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py", line 251, in clean_up_temporary_directory
ImportError: No module named numpy.distutils
Error in sys.exitfunc:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py", line 251, in clean_up_temporary_directory
ImportError: No module named numpy.distutils
Saya tidak punya masalah untuk menginstal numpy dengan pip install numpy
atau easy_install numpy
di dalam atau di luar virtualenv apa pun.
OS: Mac OS 10.6.7
_ @ rgommers menulis pada 2011-05-27_
Saya tidak yakin persis apa masalahnya, tetapi dapatkah Anda mengatasinya dengan hanya menjalankan skrip instalasi yang pertama menginstal numpy dan kemudian paket Anda? Mengandalkan fitur setuptools yang didokumentasikan dengan buruk ini bukanlah ide yang baik jika Anda dapat menghindarinya.
Jika saya harus menebak, saya akan mengatakan memanggil setuptools.setup () untuk pertama kalinya memanggil sekelompok sihir yang mengacaukan sesuatu untuk numpy.distutils, maka:
Running from numpy source directory.Warning: distutils distribution has been
initialized, it may be too late to add a subpackage commandWarning: distutils
distribution has been initialized, it may be too late to add a subpackage
Peringatan itu berasal dari distutils / misc_util.py.
_trac user ijstokes menulis pada 2011-06-08_
Saya baru saja mengalami kesalahan yang sama dan bagi saya tampaknya itu disebabkan oleh beberapa masalah ketergantungan. Jika saya mencoba kembali easy_install dengan modul lain, modul tersebut berfungsi untuk putaran kedua. Tebakan terbaik saya adalah bahwa beberapa ketergantungan hanya "terlihat" setelah sesi easy_install berakhir.
Ian
Apakah mungkin untuk memperbaikinya di beberapa titik? Ini menyebabkan solusi di mana harus ada non-IHMO. Saya benar-benar ingin mencapai titik di mana numpy dapat ditentukan dalam opsi install_requires
dari a setup.py.
Mungkin saja, jika seseorang menginvestasikan waktu untuk benar-benar memahami masalahnya dan mengirimkan perbaikan bersih. Ini bukan prio bagi saya pribadi - install_requires
harus dihindari imho (setidaknya sampai pip dan easy_install menghentikan peningkatan ketergantungan saat memutakhirkan paket setidaknya).
Bisakah Anda memastikan bahwa masalah yang sama masih terjadi dengan distutils / setuptools / pip modern?
Memang.
Dikirim dari iPad saya
Pada 29 Nov 2013, pada 7:22, njsmith [email protected] menulis:
Bisakah Anda memastikan bahwa masalah yang sama masih terjadi dengan modern
distutils / setuptools / pip?
-
Balas email ini secara langsung atau lihat di
Gi tHubhttps: //github.com/numpy/numpy/issues/2434#issuecomment -29485806
.
Baru saja menemukan masalah ini sehingga dapat mengonfirmasi masalah itu ada. Opsi install_requires
harus lebih disukai daripada harus menulis skrip instalasi khusus ketika tidak benar-benar diperlukan.
OS: Mac 10.8.3
Menekan masalah ini ke. Bukan pertunjukan yang dihentikan, tapi pasti mengganggu. Terutama karena sama sekali tidak jelas bahwa ini adalah bug daripada masalah pengguna / env.
Saya baru saja mencoba mereproduksi ini dengan menginstal panda (yang menggunakan install_requires
) di virtualenv 2.7 yang dibuat seperti:
$ virtualenv --no-site-packages nonumpy
$ source nonumpy/bin/activate
$ cd $PANDAS_DIR
$ pip install cython # needed for pandas
$ python setup.py install
Jika seseorang dapat memberikan cara mudah untuk mereproduksi ini, itu akan membantu.
Saya juga mengalami masalah ini di virtual env 2.7. os ubuntu wheezy
@zethraeus dapatkah Anda memberikan sekumpulan perintah untuk mereproduksi ini (seperti dalam komentar saya di atas)? Sulit untuk diperbaiki jika kami tidak dapat mereproduksi masalah tersebut.
Hai! Maaf, butuh waktu lama, tapi ini reproduksi.
Lihat: https://gist.github.com/kejbaly2/71517b08536776399198
Terima kasih atas contoh @ kejbaly2 , saya dapat mereproduksinya sekarang.
Masalah yang sama di SO:
http://stackoverflow.com/questions/20356725/error-installing-numpy-via-setup-tools-in-virtualenv-on-ubuntu
http://stackoverflow.com/questions/19904957/installing-numpy-as-a-dependency-in-setup-py
Dan di pelacak bug Red Hat: https://bugzilla.redhat.com/show_bug.cgi?id=1019924
Ada lebih banyak hal yang dilakukan pip
benar tetapi setuptools
tidak berkaitan dengan install_requires
: https://bitbucket.org/pypa/setuptools/issue/209/setup_requires-and-install_requires- jangan
Mengalami masalah yang sangat mirip saat mencoba menggunakan install_requires dan numpy
Inilah cara saya mereproduksi kesalahan pada Red Hat 6.5
https://gist.github.com/necrolyte2/530e9b39dcb0259b69d4
Sebagai FYI bagi siapa saja yang mengalami masalah ini, dengan versi terbaru setuptools
, solusinya adalah menambahkan NumPy ke setup_requires
. Saya masih menyimpannya di install_requires
, jadi setup.py
terlihat seperti:
setup(
...
setup_requires=["numpy"],
install_requires=["numpy"],
)
Ini berfungsi, dan hanya menginstal NumPy sekali, di Mac OS X dan Linux (tidak diuji di Windows).
Adapun mengapa saya tidak tahu.
Saya telah mencoba untuk melacak masalah serupa yang kadang-kadang dapat terjadi ketika build Numpy dijalankan dengan cara setup_requires=['Numpy']
di Astropy, ketika Astropy sendiri sedang diinstal sebagai setup_requires
dari pacakge lain (Saya menyebutnya 'setupception').
Saya telah melacaknya ke kode kuno ini (tetapi pada prinsipnya masih relevan, setidaknya sedikit?): Https://github.com/numpy/numpy/blob/9fc077332b34a7b2a90126f5ae6cc50d57162db5/numpy/distutils/core.py#L92
Dalam kebanyakan kasus ketika menjalankan Numpy's setup.py, itu mendorong fungsi yang disebut configuration
ke dalam kwargs untuk numpy.distutils.core.setup
. numpy.distutils.core.setup
pada gilirannya memunculkan kunci 'configuration'
dari setup kwargs, kemudian mengatur beberapa variabel global "ajaib" di distutils.core
, dan kemudian memanggil _itself_ secara rekursif . Tujuan dari panggilan rekursif ini adalah menggunakan mesin distutils untuk memeriksa kesalahan / - bantuan pada argumen baris perintah.
Ia kemudian memanggil fungsi configuration
yang memulai proses konfigurasi semua subpaket Numpy, sebelum sekali lagi memanggil kembali ke fungsi setup()
distutils dengan semua paket yang sekarang telah dikonfigurasi sepenuhnya.
Dimana ini semua berjalan bertentangan adalah bahwa manajer Configuration
kadang-kadang perlu memanggil utilitas get_distribution
untuk melampirkan barang ke objek Distribution
. Kebutuhan akan hal ini masih bisa diperdebatkan. Faktanya, meskipun ada beberapa bagian kode di Configuration
yang menganggap seharusnya dapat melakukan ini, ada bagian lain yang berpikir bahwa jika sudah ada instance Distribution
dilampirkan ke distutils.core._setup_distribution
maka ada sesuatu yang salah (karena itu "distribusi distutils telah diinisialisasi, mungkin sudah terlambat untuk menambahkan sub-paket" peringatan yang dilaporkan beberapa orang di utas ini).
Untuk membuat cadangan sedikit dan mudah-mudahan memperjelas - ketika menjalankan fungsi setup()
dari distutils (atau setuptools) itu menginisialisasi objek Distribution
dari setup()
kwargs, dan kemudian menetapkan menghasilkan Distribution
ke variabel global distutils.core._setup_distribution
. Tidak ada gunanya benar-benar membersihkan variabel ini karena diasumsikan itu adalah pengaturan _only_ yang akan dijalankan di interpreter Python saat ini. Itu tidak dirancang untuk setupception. (pip mengatasi masalah ini dan masalah serupa saat menginstal banyak paket dengan menginstal setiap paket dari subprosesnya sendiri). Namun, dalam kasus lain, seperti setup_requires
, sudah ada instance Distribution
dari paket root yang tergantung di distutils.core._setup_distribution
. Jadi ketika kelas Configuration
Numpy mencoba melampirkan barang ke objek Distribution
untuk _Numpy sendiri_ itu bisa berakhir dengan mengotak-atik Distribution
dalam beberapa kasus. Ini menghasilkan build Numpy yang rusak karena beberapa bit hilang.
Ada sejumlah solusi yang mungkin untuk ini, baik dari ujung setuptools dan / atau akhir Numpy. Saya belum memutuskan pendekatan apa yang terbaik, tetapi semuanya pasti berantakan :)
Untuk apa nilainya, satu solusi yang mungkin dari akhir setuptools adalah setuptools.sandbox.run_setup
, fungsi yang digunakan setuptools untuk mencapai setupception, untuk menyimpan / memulihkan semua variabel global distutils.core
sebelum / setelah menjalankan setup naskah yang dimaksud.
Saat itu terjadi, saya yakin versi setuptools saat ini mungkin sudah memperbaikinya dengan menyembunyikan distutils.core
(menghapusnya dari sys.modules
) sebelum memanggil skrip anak setup.py. Itu _harus_ mengurusnya. Tapi saya belum memeriksa ulang ini.
Pembaruan: Dikonfirmasi, masalah yang saya jelaskan di atas sedang diselesaikan (agak secara kebetulan) di setuptools> = 10.0.
@embray itu pekerjaan detektif yang bagus! (dan itu sedikit menyakiti kepalaku :))
Anda benar bahwa easy_install
- dan karenanya get_distribution()
Saya asumsikan - masih cukup relevan sehingga kita tidak boleh melanggarnya.
@rgommers Masalahnya adalah, solusi untuk easy_install sudah lama ditambahkan, dan saya tidak percaya itu sepenuhnya diperlukan lagi (tidak hanya karena fakta bahwa easy_install itu sendiri sudah tidak digunakan lagi, meskipun saya tahu masih ada beberapa alasan bagus mengapa orang harus menggunakannya). Saya akan melihat apakah saya dapat menemukan tambalan yang membahas masalah asli sementara tidak menjadi masalah dalam konteks lain.
@embray terdengar bagus. Jika Anda menyiapkan tambalan dan tidak ditinjau dalam ~ 2 minggu, tolong tendang saya (dengan lembut)
setup_requires = ["numpy"] tidak berhasil untuk saya. Saya mendapat pesan kesalahan ini:
AttributeError: objek 'module' tidak memiliki atribut 'get_include'.
Tetapi menjalankan "python setup.py install" untuk kedua kalinya memperbaiki masalah. Lihat juga http://stackoverflow.com/questions/21605927/why-doesnt-setup-requires-work-properly-for-numpy
Saya baru saja mengalami masalah yang dilaporkan oleh @asmaier.
Untuk apa nilainya, saya tidak pernah melupakan ide-ide saya untuk memperbaiki masalah ini, tetapi saya harus fokus pada hal-hal lain sekarang. Jika ada orang lain yang ingin mencobanya, saya membuat beberapa rekomendasi tingkat tinggi tentang ke mana mereka akan mencari, beberapa komentar dari sini.
jadi, masalah ini disebabkan oleh fakta bahwa __builtins__.__NUMPY_SETUP__ = True
sedang disetel
dan saat Anda menginstal ketergantungan yang membutuhkan numpy sebagai ketergantungan, __NUMPY_SETUP__
tidak disetel ulang oleh setuptools.
sepertinya Anda mencoba menyetel __NUMPY_SETUP__ = False
di sini
https://github.com/numpy/numpy/blob/055056a3108ab19883e50ac125ab9974823498c7/numpy/distutils/misc_util.py#L2195
tetapi kode ini tidak pernah tercapai, karena kembali pada baris sebelumnya ...
sebenarnya, saya yakin seluruh fungsi isbootstrapping menyalahgunakan / menyalahgunakan __builtins__
sini, dengan cara yang rusak saat Anda memiliki numpy sebagai dependensi, dan memiliki dependensi yang memiliki numpy sebagai dependensi.
@JensTimmerman Saya curiga ini juga terkait dengan https://github.com/matplotlib/matplotlib/issues/6928 ,
Ada saran tentang cara yang tepat untuk memperbaikinya.
@rgp Pikiran?
sepertinya Anda mencoba menyetel NUMPY_SETUP = False di sini
https://github.com/numpy/numpy/blob/055056a3108ab19883e50ac125ab9974823498c7/numpy/distutils/misc_util.py#L2195
tetapi kode ini tidak pernah tercapai, karena kembali pada baris sebelumnya ...
Fungsi is_bootstrapping
itu tidak digunakan dimanapun kelihatannya, jadi tidak relevan.
sebenarnya, saya yakin seluruh fungsi isbootstrapping menyalahgunakan / menyalahgunakan bawaan di sini, dengan cara yang rusak ketika Anda memiliki numpy sebagai ketergantungan, dan memiliki ketergantungan yang memiliki numpy sebagai ketergantungan.
Satu-satunya penggunaan __builtins__
ada di setup.py
sini .
Itu jelek, tapi juga sulit untuk menuliskannya dengan cara yang lebih kuat. Dugaan saya saat ini adalah bahwa jika ada masalah dengan ini, itu hanya akan muncul untuk setup_requires='numpy'
dalam keadaan tertentu dan tidak dengan install_requires
. Perbedaan di antara mereka adalah bahwa yang pertama memanggil setuptools
karena pip
belum tahu bagaimana menanganinya. Di Scipy kami menggunakan setup_requires='numpy'
, dan tidak pernah memiliki masalah dengan ini. Jadi mungkin itu ditambah dengan funkiness dalam skrip setup matplotlib.
Membaca lagi melalui https://github.com/numpy/numpy/issues/2434#issuecomment -77898051, yang sepertinya menjelaskan penyebab masalahnya dengan baik, saya rasa itu tidak ada hubungannya dengan __NUMPY_SETUP__
.
EDIT: atau mungkin memang demikian dalam beberapa kasus, tetapi sulit untuk menghadapinya dengan cara lain. Biasanya tidak ada masalah di sini karena pip
berhasil membangun / menginstal sesuatu dengan cara yang terisolasi dengan baik.
Seharusnya tidak terlalu sulit untuk membuktikan teori ini benar atau salah, dengan menggunakan del builtins.__NUMPY_SETUP__
di akhir setup.py
.
mencobanya di gh-7956
Untuk berjaga-jaga jika inti di https://github.com/numpy/numpy/issues/2434#issuecomment -49156521 menghilang di beberapa titik, berikut adalah salinan cara mereproduksi masalah ini:
cd /tmp
cat > ./setup.py <<DELIM
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: "Chris Ward" <[email protected]>
from setuptools import setup
default_setup = dict(
name='numpy_install_test',
description='https://github.com/numpy/numpy/issues/2434',
provides=['numpy_install_test'],
install_requires=['pandas'],
requires=['pandas'],
license='GPLv3',
author='Chris Ward',
author_email='[email protected]',
)
setup(**default_setup)
DELIM
virtualenv --no-site-packages ~/virtenvs/nonumpy
source ~/virtenvs/nonumpy/bin/activate
python setup.py install
mengalami kesulitan menginstal panda di python2.7.16 menggunakan pip install -R requirement.txt
https://files.pythonhosted.org/packages/b2/4c/b6f966ac91c5670ba4ef0b0b5613b5379e3c7abdfad4e7b89a87d73bae13/pandas-0.24.2.tar.gz (11.8MB)
Keluaran lengkap dari perintah python setup.py egg_info:
Traceback (panggilan terakhir terakhir):
File "
File "/tmp/pip-install-WznqHc/pandas/setup.py", baris 746, di
setuptools_kwargs)File "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", baris 144, sedang disiapkan_install_setup_requires (attrs)File "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", baris 139, di _install_setup_requiresdist.fetch_build_eggs (dist.setup_requires)File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", baris 724, di fetch_build_eggsreplace_conflflict = Benar,File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", baris 782, dalam penyelesaianganti_konflik = ganti_ konflikFile "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", baris 1065, di best_matchkembali self.obtain (req, installer)File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", baris 1077, di dapatkanpenginstal kembali (persyaratan)File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", baris 791, di fetch_build_eggkembalikan cmd.easy_install (req)File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", baris 679, di easy_installreturn self.install_item (spec, dist.location, tmpdir, deps)File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", baris 705, di install_itemdists = self.install_eggs (spesifikasi, unduh, tmpdir)File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", baris 890, di install_eggskembali self.build_and_install (setup_script, setup_base)File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", baris 1158, di build_and_installself.run_setup (setup_script, setup_base, args)File "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", baris 1144, di run_setuprun_setup (setup_script, args)File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 253, di run_setupmenaikkanFile "/usr/local/lib/python2.7/contextlib.py", baris 35, di __exit__self.gen.throw (tipe, nilai, traceback)File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 195, di setup_contextmenghasilkanFile "/usr/local/lib/python2.7/contextlib.py", baris 35, di __exit__self.gen.throw (tipe, nilai, traceback)File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 166, di save_modulessave_exc.resume ()File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 141, dalam resumesix.reraise (tipe, exc, self._tb)File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 154, di save_moduleshasil disimpanFile "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 195, di setup_contextmenghasilkanFile "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 250, di run_setup_execfile (setup_script, ns)File "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", baris 45, di _execfileexec (kode, global, penduduk setempat)** File "/tmp/easy_install-2M8B7z/numpy-1.17.0rc1/setup.py", baris 31, di
**RuntimeError: Python version >= 3.5 required.**
Tidak yakin mengapa mencari numpy-1.17.0rc1 yang tidak mendukung python2
Bantuan apa pun akan dihargai, terima kasih
Bagikan requirements.txt
File persyaratan berisi:
labu == 1.0.2
labu-jwt == 0.3.2
flask-script == 2.0.6
flask-scrypt == 0.1.3.6
PyJWT <1.5.0
penutup mata == 1.4
nomor telepon == 8.9.12
flanker == 0.9.0
bugsnag == 3.4.3
acarb == 0.7.2
permintaan == 2.19.1
python-dateutil == 2.8.0
gunicorn == 19.9.0
gevent == 1.3.6
biaya web == 4.0.0
lapis == 3.10
bson == 0,5.7
seledri == 4.2.1
redis == 3.2.1
hiredis
numpy == 1.16.4
Terakhir, kelola agar berfungsi menjaga file persyaratan numpy inside dan kemudian menginstal pandas
Jalankan perintah di buruh pelabuhan:
RUN pip instal https://github.com/pydata/pandas/releases/download/v0.24.2/pandas-0.24.2.tar.gz
Namun, sekarang ada masalah lain dalam mengompilasi yang mengatakan Anda perlu menginstal cython untuk mengkompilasi pandas.
Kesalahan:
Pengecualian: File 'pandas / io / sas / sas.c' yang dibuat oleh Cython tidak ditemukan.
Cython diperlukan untuk mengkompilasi panda dari cabang pengembangan.
Silakan instal Cython atau unduh paket rilis pandas.
Ada ide?
Tidak terkait dengan masalah ini yang menyangkut penggunaan install_requires
di dalam setup.py
. Silakan buka terbitan baru. Apakah Anda benar-benar perlu menginstal panda dari sumbernya? Mengapa tidak pip install pandas==0.24.2
?
Ya, saya akan membuka masalah ini di perpustakaan panda. Namun, posting yang saya sebutkan sebelumnya itu terkait dengan numPy karena Anda tidak dapat menginstal panda secara langsung numPy diinstal dengan benar di Python2.7 di bawah docker env.
Mengapa tidak pip install pandas == 0.24.2? Karena ketika saya menjalankannya di bawah buruh pelabuhan dikatakan.
Pengecualian: File 'pandas / msgpack.c' yang dibuat oleh Cython tidak ditemukan.
Cython diperlukan untuk mengkompilasi panda dari cabang pengembangan.
Silakan instal Cython atau unduh paket rilis pandas.
Jadi saya perlu menggunakan versi rilis panda untuk diinstal dari tarball
Penutupan. Saya pikir dunia python bergerak menjauh dari setup_requires
dan lebih menuju requirements.txt
atau pyproject.toml
. Solusi di bawah ini untuk mereka yang masih ingin menggunakan setup_requires
.
setup(
...
setup_requires=["numpy"],
install_requires=["numpy"],
)
Adapun @omeryounus mencoba menginstal numpy di python2, itu adalah masalah terpisah yang tidak terhubung dengan yang ini. Beberapa pengguna telah melaporkan bahwa mengupgrade pip dan setuptools ke versi terbaru membantu mengatasi masalah tersebut.
Silakan buka kembali jika masih ada lagi yang perlu didiskusikan sekitar setup_requires
.
Komentar yang paling membantu
Sebagai FYI bagi siapa saja yang mengalami masalah ini, dengan versi terbaru
setuptools
, solusinya adalah menambahkan NumPy kesetup_requires
. Saya masih menyimpannya diinstall_requires
, jadisetup.py
terlihat seperti:Ini berfungsi, dan hanya menginstal NumPy sekali, di Mac OS X dan Linux (tidak diuji di Windows).
Adapun mengapa saya tidak tahu.