<p>instalasi numpy melalui masalah perintah install_requires (Trac # 1841)</p>

Dibuat pada 20 Okt 2012  ·  39Komentar  ·  Sumber: numpy/numpy

_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

00 - Bug Other

Komentar yang paling membantu

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.

Semua 39 komentar

_ @ 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.

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 "", baris 1, masuk
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 .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

keithbriggs picture keithbriggs  ·  3Komentar

dmvianna picture dmvianna  ·  4Komentar

Foadsf picture Foadsf  ·  3Komentar

qualiaa picture qualiaa  ·  3Komentar

toddrjen picture toddrjen  ·  4Komentar