Numpy: pip install pada python 2.7 mencoba menginstal numpy 1.17, bertentangan dengan NEP 14

Dibuat pada 16 Agu 2019  ·  15Komentar  ·  Sumber: numpy/numpy

pip install numpy pada python 2.7 mencoba menginstal numpy 1.17, yang menjatuhkan dukungan python 2.7. Ini bertentangan dengan fungsi yang dijelaskan dalam NEP 14 , yang menyatakan:

... pip install numpy pada Python 2 akan terus memberikan rilis terakhir yang berfungsi selamanya...

Informasi versi Numpy/Python:

versi pip: 19.2.2
python: 2.7.15 |Anaconda, Inc.| (default, 23 Okt 2018, 18:31:10) n[GCC 7.3.0]

32 - Installation

Komentar yang paling membantu

pertanyaan sebenarnya adalah mengapa Anda menggunakan python 2.7

ada banyak alasan yang sah untuk tetap menjalankan 2.7, tolong jangan mulai perdebatan itu di sini.

Semua 15 komentar

Tampaknya ada bug di pip atau setuptools yang menyebabkan ini, dapatkah Anda mencoba memutakhirkan pip? (lihat juga gh-13911 yang saya harapkan adalah duplikatnya). Anda mungkin dapat memutakhirkan pip dengan pip itu sendiri: python -m pip install --upgrade pip dan python -m pip install --upgrade setuptools ?

pertanyaan sebenarnya adalah mengapa Anda menggunakan python 2.7

pertanyaan sebenarnya adalah mengapa Anda menggunakan python 2.7

ada banyak alasan yang sah untuk tetap menjalankan 2.7, tolong jangan mulai perdebatan itu di sini.

Tampaknya ada bug di pip atau setuptools yang menyebabkan ini, dapatkah Anda mencoba memutakhirkan pip? (lihat juga gh-13911 yang saya harapkan adalah duplikatnya). Anda mungkin dapat memutakhirkan pip dengan pip itu sendiri: python -m pip install --upgrade pip dan python -m pip install --upgrade setuptools ?

Saya menjalankan versi terbaru dari keduanya - pip 19.2.2 dan setuptools 41.1.0.

pertanyaan sebenarnya adalah mengapa Anda menggunakan python 2.7

ada banyak alasan yang sah untuk tetap menjalankan 2.7, tolong jangan mulai perdebatan itu di sini.

Memang ada. Dalam kasus saya, saya mencoba menjalankan perangkat lunak analisis ilmiah yang dikembangkan secara akademis yang belum di-porting ke py3.

Tetapi intinya di sini bukanlah apakah saya harus menggunakan python 2.7 atau tidak, itu adalah bahwa numpy membuat pernyataan formal tentang fungsionalitas yang diharapkan, dan itu bukan fungsionalitas yang sebenarnya. Itu, dalam pikiran saya, adalah bug.

Saya perhatikan kemarin bahwa pip tidak akan menginstal pytest 5.0.1 untuk Python 2.7 karena 2.7 tidak didukung, jadi pip berfungsi dengan benar dalam beberapa kasus. Saya ingin tahu apakah ada informasi di suatu tempat yang perlu diperbarui untuk 1.17?

Anda dapat mencoba python2.7 -mpip untuk memastikan pip mengetahui versi apa yang sedang berjalan. Sepertinya Anda juga menggunakan Anaconda, yang bisa menjadi komplikasi saat dicampur dengan pip.

Apa yang which pip tunjukkan?

Hmmm, di mesin saya, pip 18.1 dan setuptools 41.0.1 berfungsi dengan baik (baik biner maupun tanpa mode biner). Memutakhirkan ke 19.2.2 dan 41.1.0 tidak mengubah apa pun bagi saya. Versi python adalah 2.7.16+ (debian).

Sebagai catatan Chuck, saya berasumsi Anda memastikan untuk menggunakan python2.7 -mpip alih-alih pip untuk memastikan bahwa Anda mendapatkan versi terinstal terbaru (jika Anda menggunakan --user atau memiliki yang lain versi pip sekitar untuk beberapa alasan.)?

Akan sangat baik untuk memahami apa sebenarnya yang menyebabkan ini.

@IPetrik apakah Anda dapat mengumpulkan contoh yang sepenuhnya dapat direproduksi? Anda menggunakan Anaconda, jadi sesuatu seperti:

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

Saya mencoba beberapa variasi ini, tetapi tidak dapat mereproduksi masalah Anda.

Setelah mencoba menyiapkan contoh minimal, saya menemukan masalahnya: kami menggunakan server cache devpi PyPI lokal yang ada di pip.conf sebagai extra-index-url . Jika saya menghapusnya dari pip.conf , semuanya berfungsi dengan baik... oops.

Hmm, sepertinya pip harus menangani itu. Apakah ada sesuatu yang istimewa tentang cache dan pip.conf ? Saya tidak terbiasa dengan hal-hal itu. @njsmith Ada ide?

Saya ingin tahu apakah server devpi tidak meneruskan metainformasi tentang versi yang tersedia untuk paket yang diberikan dengan benar.

Menemukan satu alasan mengapa pip dapat mencoba menginstal 1.17.0 untuk Python 2.7. Ini terjadi ketika sebuah paket menggunakan setup_requires='numpy' . Ini karena itu akan memanggil easy_install kecuali paket itu memiliki pyproject.toml (lihat https://github.com/pypa/pip/issues/6945#issuecomment-526479930).

Ada solusinya: lakukan secara eksplisit pip install numpy sebelum pip install package-with-setup-requires .

Dan perbaikannya adalah: paket itu harus menambahkan pyproject.toml , yang akan membuat masalah ini hilang untuk rilis baru dari paket itu.

Menemukan satu alasan mengapa pip dapat mencoba menginstal 1.17.0 untuk Python 2.7. Ini terjadi ketika sebuah paket menggunakan setup_requires='numpy' . Ini karena itu akan memanggil easy_install kecuali paket itu memiliki pyproject.toml (lihat pypa/pip#6945 (komentar) ).

Ada solusinya: lakukan secara eksplisit pip install numpy sebelum pip install package-with-setup-requires .

Kasus konkretnya adalah pip install pycuda , yang gagal seperti:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

Solusinya sederhana, seperti yang dicatat oleh @rgommers : pertama-tama jalankan pip install numpy==1.16.6 (untuk rilis NumPy yang kompatibel dengan Python 2.7 terakhir) dan kemudian coba kembali pip install pycuda .

Itu adalah bug pip , dan sepertinya sangat serius. Saya dapat mereproduksinya dengan pip 20.1.1. pip-2.7 install numpy menginstal dengan benar 1.16.6 , jadi metadata untuk numpy di PyPI sudah benar. pip-2.7 install pycuda mencoba menginstal numpy terbaru alih-alih 1.16.6 .

Kemungkinan itu sudah dilaporkan, saya tidak punya waktu untuk memeriksanya dalam beberapa hari mendatang. @artob jika Anda melihat apakah ada masalah Pip untuk ini dan buka yang lain, itu akan sangat dihargai.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat