Numpy: EROR: test_big_arrays (test_io.TestSavezLoad) di OS X + Python 3.3

Dibuat pada 3 Okt 2013  ·  29Komentar  ·  Sumber: numpy/numpy

Dilaporkan oleh Piet van Oostrum di milis terhadap 1.8.0rc1 di OS X dengan Python 3.3:

======================================================================
ERROR: test_big_arrays (test_io.TestSavezLoad)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/testing/decorators.py", line 146, in skipper_func
    return f(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/tests/test_io.py", line 149, in test_big_arrays
    np.savez(tmp, a=a)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/npyio.py", line 530, in savez
    _savez(file, args, kwds, False)
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/npyio.py", line 589, in _savez
    format.write_array(fid, np.asanyarray(val))
  File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numpy/lib/format.py", line 417, in write_array
    fp.write(array.tostring('C'))
OSError: [Errno 22] Invalid argument
00 - Bug numpy.lib

Komentar yang paling membantu

Halo semua,

Bisakah Anda mencoba masalah ini dengan versi terakhir Python 3.6, 3.7 dan 3.8a karena saya pikir telah memperbaiki masalah di OSX dengan PR ini (https://github.com/python/cpython/pull/1705).

Saya punya PR lain untuk 2.7, tapi yang ini belum siap: /

Terima kasih atas tanggapan Anda.

Semua 29 komentar

Saya bisa mereproduksi ini. Sepertinya bug Python 3.x.

import os
import sys
import time


if sys.maxsize > 2**32:
    print('64-bit')
else:
    print('32-bit, exiting')
    sys.exit(0)

fname = 'write_large_bytestring.txt'
tmp = open(fname, 'wb')
try:
    L = (1 << 31) + 100000
    tmp.write(b'abc' * 2**32)
finally:
    tmp.close()
    os.remove(fname)
    print('Elapsed time: %s s' % time.clock())

Di atas bekerja dengan Python 2.7 tetapi tidak dengan 3.3:

$ python tmp3.py 
64-bit
Elapsed time: 7.896957 s

$ python3.3 tmp3.py 
64-bit
Elapsed time: 50.149956 s
Traceback (most recent call last):
  File "tmp3.py", line 16, in <module>
    tmp.write(b'abc' * 2**32)
OSError: [Errno 22] Invalid argument

$ ulimit
unlimited

Kedua Python diinstal dari dmgs di python.org. Saya tidak dapat menemukan masalah untuk ini di bugs.python.org tetapi IIRC modul io telah sepenuhnya ditulis ulang.

Tes diperkenalkan di gh-2942.

Atau mungkin ini adalah bug OSX I / O lainnya? Ingat, OSX libc bermasalah dan memiliki masalah dalam fwrite / fread saat berurusan dengan blok data yang mendekati 2 ** 32, yang harus kami atasi dalam tofile / fromfile ...

Bagaimanapun, kami jelas harus mengatasinya dengan memisahkan tulisan
menjadi potongan yang lebih kecil, bukan?

(Bahkan jika itu pada akhirnya kesalahan libc, python mungkin harus mengatasi masalah
itu sendiri - mungkin 2,7 memiliki kode untuk melakukan ini yang tersesat di
transisi.)
Pada 3 Okt 2013 10:03, "Pauli Virtanen" [email protected] menulis:

Atau mungkin ini adalah bug OSX I / O lainnya? Ingat, OSX libc bermasalah dan memiliki
masalah dalam fwrite / fread saat berhadapan dengan blok data yang mendekati 2 ** 32 ...

-
Balas email ini secara langsung atau lihat di Gi tHubhttps: //github.com/numpy/numpy/issues/3858#issuecomment -25607852
.

Re: gh-574 dan gh-2806 dan gh-3473 Versi OSX yang dimaksud mungkin relevan, mungkin sekarang gagal daripada menulis sampah seperti sebelumnya?

Ya, kita dapat mengatasinya dengan memotong. Mungkin masalah ini juga harus diteruskan ke Python devs, sehingga mereka juga dapat mengimplementasikan chunking sendiri ...

Ah, lupakan masalah itu. Mencoba menguji pada mesin 10.6 saya, tetapi ada skrip yang sama hanya hang. Bisa jadi karena perangkat kerasnya, ini adalah mesin kuno.

Apakah ini pemblokir 1.8.0? Saya akan menaruhnya di sana agar tidak dilupakan, selalu dapat dihapus. Adakah yang tahu apakah ini berfungsi untuk Python 3.2?

Juga, IIRC, kita hanya memotong bacaan, mungkin tes yang menulis file besar rusak.

Saya tidak akan menunda rilis untuk yang satu ini, ini bukan regresi. Tandai sebagai gagal di cabang 1.8.x jika tidak gagal sebelum rilis.

@rgommers Apakah jika gagal hanya dengan OSX dan 3.3? Anda mengatakan bahwa ini berfungsi untuk python 2.7, apakah itu benar?

Itu tidak gagal untuk 2.7, tetapi pengujian tidak memeriksa bahwa apa yang ditulis ke file sudah benar. Sepertinya tidak benar, lihat masalah lain yang ditautkan oleh Pauli.

@rgommers Jadi OSX secara umum. Saya akan membiarkannya terbuka dalam 1.9-devel untuk memotivasi perbaikan dan membuka masalah.

Ini dilaporkan telah diperbaiki di OS X Mavericks. Ini mungkin tidak akan diperbaiki, karena perbaikan yang tepat adalah meningkatkan OS.

Lihat juga # 2931.

Penutupan, harus diperbaiki oleh Mavericks. Harap buka kembali jika masalah terus berlanjut.

Ini masih terjadi pada saya di Mavericks dengan numpy 1.8.1 dan python 3.4 (juga 3.3) dari Anaconda; jika saya mengomentari skipif dekorator, https://github.com/numpy/numpy/blob/v1.8.1/numpy/lib/tests/test_io.py#L154 gagal.

Tes berhasil, dan data tampaknya dimuat dengan benar, menggunakan python 2.7 dari Anaconda.

Ini tidak selalu merupakan cacat dengan numpy, tetapi yang lain tampaknya mengatasi masalah ini atau yang serupa, misalnya https://github.com/torch/torch7-distro/commit/40e65934e071e452f194a9d8c0fd740131babefa (yang untuk membaca daripada menulis, tetapi Saya juga tidak dapat membaca file besar di python 3).

Menjalankan testcase menggunakan Python 3.4 dengan numpy 1.8.1 di Mac OS X 10.9.4 (Mavericks) menghasilkan kesalahan OSError: [Errno 22] Invalid argument diketahui. @certik Harap buka kembali masalah!

Titik data lain - menggunakan OSX 10.9.5 (Mavericks) dan saya mendapatkan masalah yang sama. Saya baru saja melihat bug ini di pelacak python: https://bugs.python.org/issue24658

Sebaiknya buka kembali ini. Saya tidak tahu apakah itu akan diperbaiki ketika Python menyelesaikan bagiannya, tetapi kami akan mencari tahu.

Jadinya di sini, macOS terbaru, python (3.6), dan numpy.

FYI Masih melihat bug ini di macOS terbaru (10.12.6) dan Python 3.5.2 (Anaconda 4.2.0).
Adakah yang tahu batas atas ukuran potongan?

Mendapatkan kesalahan ini juga, macOS Sierra, python 3.6, numpy

Tampaknya ada beberapa gerakan pada masalah Python, tetapi mungkin kita harus melanjutkan dan memotong tulisan.

Sepertinya ini tidak akan diperbaiki dalam waktu dekat. Ada yang tahu status terbaru?

Halo semua,

Bisakah Anda mencoba masalah ini dengan versi terakhir Python 3.6, 3.7 dan 3.8a karena saya pikir telah memperbaiki masalah di OSX dengan PR ini (https://github.com/python/cpython/pull/1705).

Saya punya PR lain untuk 2.7, tapi yang ini belum siap: /

Terima kasih atas tanggapan Anda.

@rgommers Adakah kesempatan Anda dapat menguji ini? Umpan balik lain tentang status saat ini akan diterima.

Tes test_big_arrays berhasil, tetapi https://github.com/numpy/numpy/issues/3858#issuecomment -25607105 masih gagal untuk saya dengan Python 3.6 terbaru yang dikirimkan oleh Anaconda. Itu mungkin tidak memiliki perbaikan CPython. Tidak ada waktu untuk membuat Python sendiri sekarang, maaf.

@rgommers dapatkah Anda mengunjungi kembali ini?

Ini memang diperbaiki sejauh yang saya tahu, setidaknya dengan Python 3.7 dari Anaconda. Tidak ada laporan lain juga, jadi tutup. Terima kasih semuanya, dan @matrixise khususnya karena telah memperbaikinya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat