Pip: Memutakhirkan ke pip 10: Ini adalah proyek yang diinstal distutil dan dengan demikian kami tidak dapat secara akurat menentukan file mana yang menjadi miliknya yang hanya akan menyebabkan penghapusan sebagian.

Dibuat pada 16 Apr 2018  Β·  41Komentar  Β·  Sumber: pypa/pip

  • Versi pip: 10.0.0
  • Versi Python: 2.7
  • Sistem operasi: Amazon ECS-Dioptimalkan Amazon Linux AMI 2017.09.i

Keterangan:

Saya mencoba menginstal docker-py, ini adalah bagian biasa dari alur kerja penyiapan infrastruktur kami dan kami menjalankannya untuk beberapa waktu. Saya mendapatkan kesalahan berikut untuk beberapa paket:

Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Semuanya bekerja seperti yang diharapkan dengan pip 9.0.2. Apakah ada yang berubah? Apa yang bisa saya lakukan untuk memperbaiki ini? (kecuali menyematkan versi pip ke 9.0.2 atau 9.0.3)

Apa yang saya jalankan:

Upaya instalasi pertama dengan pip 10

# /usr/local/bin/pip2 install docker-py
Collecting docker-py
  Using cached docker_py-1.10.6-py2.py3-none-any.whl
Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python2.7/site-packages (from docker-py) (1.11.0)
Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in /usr/local/lib/python2.7/site-packages (from docker-py) (3.5.0.1)
Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in /usr/local/lib/python2.7/site-packages (from docker-py) (1.0.22)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python2.7/site-packages (from docker-py) (0.47.0)
Collecting requests!=2.11.0,>=2.5.2 (from docker-py)
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting docker-pycreds>=0.2.1 (from docker-py)
  Using cached docker_pycreds-0.2.2-py2.py3-none-any.whl
Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (2.6)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (2018.1.18)
Collecting chardet<3.1.0,>=3.0.2 (from requests!=2.11.0,>=2.5.2->docker-py)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: chardet, requests, docker-pycreds, docker-py
  Found existing installation: chardet 2.0.1
Cannot uninstall 'chardet'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Diturunkan ke pip 9.0.3 dan kemudian dapatkan ini:

# /usr/local/bin/pip2 install docker-py
Collecting docker-py
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading docker_py-1.10.6-py2.py3-none-any.whl (50kB)
    100% |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 51kB 4.8MB/s
Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python2.7/site-packages (from docker-py)
Collecting requests!=2.11.0,>=2.5.2 (from docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 92kB 8.2MB/s
Collecting docker-pycreds>=0.2.1 (from docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading docker_pycreds-0.2.2-py2.py3-none-any.whl
Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Collecting chardet<3.1.0,>=3.0.2 (from requests!=2.11.0,>=2.5.2->docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 143kB 7.7MB/s
Installing collected packages: chardet, requests, docker-pycreds, docker-py
  Found existing installation: chardet 2.0.1
    DEPRECATION: Uninstalling a distutils installed project (chardet) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling chardet-2.0.1:
      Successfully uninstalled chardet-2.0.1
  Found existing installation: requests 1.2.3
    Uninstalling requests-1.2.3:
      Successfully uninstalled requests-1.2.3
Successfully installed chardet-3.0.4 docker-py-1.10.6 docker-pycreds-0.2.2 requests-2.18.4
You are using pip version 9.0.3, however version 10.0.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Saya juga melihat masalah dengan menginstal awscli, mengeluh beberapa paket tidak diinstal. (Menginstalnya terlebih dahulu memperbaiki masalah).

Jika saya mencoba menginstal ulang awscli misalnya, saya mendapatkan kesalahan yang sama untuk PyYAML:
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

support

Komentar yang paling membantu

Saya menggunakan langkah-langkah berikut dan menyelesaikan masalah ini

  1. Versi yang dikurangi:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. Mencoba menginstal ulang paket:
    pip install xxx --disable-pip-version-check
  3. Akhirnya, pulihkan versi terbaru untuk pip:
    pip install --upgrade pip

Semua 41 komentar

Se #4805 dan #3389 untuk sejarahnya. Pada dasarnya, pip tidak dapat menghapus instalasi paket yang diinstal dengan benar oleh distutil "murni", karena distutil tidak merekam metadata yang cukup untuk kami lakukan. Kami sebelumnya telah menghapus metadata penginstalan, sehingga sepertinya kami melakukan penginstalan, tetapi kami harus meninggalkan file. Itu menyebabkan masalah. Sejak pip 8, kami telah mencoba untuk berhenti melakukan ini, karena ini adalah penyebab masalah, tetapi upaya awal kami dibatalkan karena terlalu banyak orang yang terkena dampak pada saat itu. Dengan pip 10, kami akhirnya berhenti mencoba menghapus paket distutil, dan sekarang kami melaporkan masalah tersebut kepada pengguna seperti yang Anda lihat di sini.

Pada dasarnya, jika Anda (atau beberapa infrastruktur yang Anda gunakan) menginstal paket menggunakan distutils, Anda perlu mengelola (dan khususnya) menghapus instalannya "menggunakan distutils". Sayangnya distutils tidak menyertakan perintah uninstall, jadi "uninstall using distutils" berarti menghapus paket secara manual.

@pfmoore Terima kasih atas jawaban cepatnya!

Ini agak merepotkan karena sebagian besar paket terinstal sebagai dependensi dan kami tidak mengelolanya sendiri. Mengotomatiskan penghapusan akan menarik.

Saya melihat ada beberapa gerakan untuk hanya memutakhirkan paket, tanpa menghapusnya terlebih dahulu. Akan sangat bagus jika ini akhirnya terjadi.

Kita bisa menutup masalah ini karena dibahas secara luas di tempat lain. Terima kasih!

Coba hapus paket secara manual dari "paket situs". Ini bekerja sempurna!

Sepertinya saya mengatasi masalah ini dengan menyediakan versi pip dengan perintah
pip install -I==9.0.3 -r requirements.txt

Saya menggunakan langkah-langkah berikut dan menyelesaikan masalah ini

  1. Versi yang dikurangi:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. Mencoba menginstal ulang paket:
    pip install xxx --disable-pip-version-check
  3. Akhirnya, pulihkan versi terbaru untuk pip:
    pip install --upgrade pip

Ini sepertinya memperbaiki masalah bagi saya: https://github.com/blockstack/blockstack-core/issues/504

Dalam kasus asli di atas, itu adalah:

pip install docker-py --ignore-installed PyYAML

Tidak tahu siapa kamu, tapi aku mencintaimu.

Jadi @pfmoore apa yang akan Anda rekomendasikan untuk tim yang mengotomatiskan instalasi pip mereka? Kami mengatur server kami menggunakan terraform, jadi kami secara otomatis memanggil pip install untuk smart-open dan boto3 dan kemudian kami memiliki numpy, scipy, boto, sklearn, dan datadog di requirements.txt. Kami mendapatkan kesalahan distutils untuk urllib3 untuk beberapa pemasangan (karena smart-open menginstalnya). Penginstalan berfungsi ketika saya menggunakan --ignore-installed urllib3 , tetapi apakah ada cara yang lebih tepat untuk melakukan ini?

Juga, apakah ada kemungkinan distutils akan menambahkan fitur uninstall atau lebih banyak metadata? Apakah kalian sudah membicarakan hal ini dengan tim itu?

@ ruby-is-cukup-keren Saya tidak punya pendapat nyata tentang itu. Anda mengatakan tentang urllib3 "karena smart-open menginstalnya" tetapi saya tidak melihat apa pun di smart-open yang menyatakan ketergantungan pada urllib3, jadi saya tidak tahu apa yang Anda maksud dengan itu. Jika smart-open entah bagaimana menginstal urllib3 dengan cara yang memicu masalah ini, itu terdengar seperti masalah smart-open.

Juga, apakah ada kemungkinan distutils akan menambahkan fitur uninstall atau lebih banyak metadata? Apakah kalian sudah membicarakan hal ini dengan tim itu?

Bukannya saya tahu, dan tidak, kami belum membicarakannya dengan mereka. Saya ragu mereka akan melakukannya, karena distutils tidak benar-benar mengimplementasikan fitur baru akhir-akhir ini (tetapi jangan ragu untuk bertanya apakah Anda mau). Dokumentasi pengemasan resmi tidak merekomendasikan penggunaan distutil secara langsung, jadi jika proyek melakukannya, terserah mereka untuk mengelola implikasinya.

Saya baru saja mencoba menginstal smart-open. Itu tergantung pada permintaan, yang pada gilirannya tergantung pada urllib3. Itu diinstal dengan benar oleh pip ketika saya melakukan instalasi di virtualenv. Apakah Anda melakukan instalasi ini di lingkungan sistem? Dalam hal ini, apakah Anda melihat (dan mencoba memutakhirkan) sistem yang terinstal urllib3? Jika demikian, saran normal "jangan gunakan pip pada paket sistem" berlaku - gunakan virtualenv atau jika Anda perlu menginstal ke lingkungan sistem Anda, gunakan paket distro.

Saya cukup baru dalam pengemasan Python, tetapi saya merasa bahwa paket virtualenv atau distro akan memperbaiki masalah kami - saya harus memeriksanya lebih lanjut. Terima kasih untuk bantuannya!

Ini gila. Instalasi sedang rusak karena beberapa kepercayaan seperti agama. jika beberapa entri setup.py dari beberapa paket menyentuh urllib3, maka tidak ada cara untuk memberitahunya untuk mengabaikannya. Dalam kasus kami, kami harus memutakhirkan urllib3 karena di Ubuntu 14 versi pip (v1.5.x) yang diinstal menolak untuk menginstal paket dari URL https.

Intinya adalah tidak ada yang akan memutakhirkan paket "sistem" jika mereka tidak berhenti bekerja. Dalam proyek kernel linux, perilaku ini "melanggar ruang pengguna" dan Torvalds tidak bereaksi dengan baik terhadapnya. Sungguh luar biasa orang python menganggapnya baik-baik saja secara alami.

Setidaknya Anda harus memperingatkan orang-orang dalam pesan pip dengan sesuatu seperti "versi pip ini akan menolak untuk bekerja jika itu berarti memutakhirkan paket sistem, lakukan ini dan lakukan itu. Gunakan pip versi 9.x jika Anda bekerja dengan penginstal lama atau lama sistem." atau serupa.

Oke, saya tidak memperhatikan karena milik saya masih disemprot, tapi, maksud saya lebih sederhana.
Seluruh alasan untuk secara agresif meningkatkan userland adalah: ATT&T dan berkley masih meremehkan siapa yang membuat tempat sampah, katakanlah... Dan jika Anda menginstalnya di aha1542, Anda bisa membuang joilet yang diberi dosis karena lisensi; dan seperti yang baru-baru ini muncul juga, mereka beralasan mengapa kita melakukan omong kosong ini sejak awal; demi KRISTUS, adalah memiliki pilihan DAN bekerja sama. Saya masih bingung mengapa slackeware dan *bsd path masuk ke dalam, tetapi bagaimanapun, bahkan di dua kubu, 1 akan mendorong yang lain, saya akan bosan dengan kernel, kembali ke 2.x, 16+ layar, (Saya belum menemukan driver promix di menu, tapi saya ngelantur, & sekarang kembali ke jadwal rutin saya, WTF tidak bisakah kita mendapatkan .app jadi omong kosong ini bekerja hari ini. (Tentu saja mengacaukannya.)

Saya setuju dengan @pabloa - Ini telah berlangsung selamanya, instalasi vanilla CentOS 7 tidak dapat menginstal docker-compose karena ini.

Dan ya, @JohnBDonner , bendera kecil itu menyelamatkan saya BANYAK waktu. TERIMA KASIH

Kesalahan Awal

"Tidak dapat menghapus 'pywin32'. Ini adalah proyek yang diinstal distutil dan dengan demikian kami tidak dapat secara akurat menentukan file mana yang menjadi miliknya yang hanya akan menyebabkan penghapusan sebagian"

Bagaimana saya sampai di sana?

Saya telah menginstal pywin32==221 ke mesin saya, dan sekarang saya mencoba untuk menghapus versi peningkatannya (pywin==224), saya mendapatkan tautan ke ".whl" dan saya menghadapi tantangan untuk menginstalnya ketika saya menerima kesalahan berikut "Tidak dapat menghapus 'pywin32'. Ini adalah proyek yang diinstal distutil dan dengan demikian kami tidak dapat secara akurat menentukan file mana yang menjadi miliknya yang hanya akan menyebabkan pencopotan sebagian." . Saya menggunakan Window 10 64bit, menggunakan py3.4 32bit.

Alasan saya melakukan ini?

adalah karena sepertinya "win32.client" di mesin saya hanya memiliki file python "optimalkan" "ekstensi file .pyo". Saya menemukan ini ketika saya menerima kesalahan kompilasi yang mengatakan saya tidak memiliki modul "Dispatch" yang tersedia untuk "dari win32com.client import Dispatch". Hargai jika ada yang bisa membantu saya dalam hal ini.

KAMU GILA BUNG??

Tidak, tapi terima kasih atas penyalahgunaan acaknya. Itu membuat melakukan ini di waktu luang saya sangat bermanfaat :senyum:

Itu tidak dimaksudkan untuk menyelesaikan masalah. Itu dimaksudkan untuk menjelaskan mengapa segala sesuatunya seperti itu, dan mengapa pip tidak dapat menyelesaikan masalah. Hanya karena orang sedih tentang situasi tidak mengubahnya.

Apakah mungkin untuk mengubah paket penginstal yang digunakan oleh disyutils sedemikian rupa sehingga
itu termasuk meta data yang diperlukan?
Pada Thu, Nov 22, 2018 at 12:56 Paul Moore [email protected]
menulis:

Itu tidak dimaksudkan untuk menyelesaikan masalah. Itu dimaksudkan untuk menjelaskan mengapa
semuanya seperti apa adanya, dan mengapa pip tidak dapat menyelesaikan masalah. Hanya
karena orang sedih tentang situasi tidak mengubahnya.

β€”
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441095536 , atau bisu
benang
https://github.com/notifications/unsubscribe-auth/ADrjCZvIpDr4X1sxcSZe3rRH7MBnn7Tsks5uxuVagaJpZM4TWMU4
.

>

Nick Artman
+1 (330) 558-1230

Saya tidak tahu, saya tidak mengerjakan distutil. Tetapi bahkan jika ya, mengapa orang masih menggunakan distutil akhir-akhir ini? Thread ini adalah tentang paket-paket yang sudah diinstal menggunakan distutils. Solusi untuk itu sudah disebutkan sebelumnya di utas ini .

@AddoSolutions perubahan yang Anda minta disebut setuptools

Jadi alasan saya di utas ini karena saya sering bekerja dengan vanilla
CentOS 7 kotak dan secara khusus menginstal docker compose di atasnya. CentOS
dilengkapi dengan pip dan masalahnya adalah saya mendapatkan kesalahan ini seperti yang dijelaskan
di atas.

Saya pribadi bukan pengguna Python, saya hanya menggunakan docker compose dan
antar-jemput di atasnya. Saya pribadi tidak tahu perbedaan antara setuptools
dan distutil, saya menduga python CentOS pada dasarnya diinstal
menggunakan yum saat menginstal?

Dua hal dengan itu: dapatkah paket yum diperbarui sedemikian rupa sehingga mencakup
metadata yang benar? Atau, bisa setelah mendapatkan kesalahan ini, bisa
pesan memberikan info lebih bermanfaat tentang apa yang harus dilakukan? Seperti bukannya
pesan yang relatif samar tentang distutil (sekali lagi untuk orang seperti saya menggunakan
pip, saya bahkan tidak tahu apa itu) bisakah itu mengatakan sesuatu seperti "jalan"
pip yang diinstal tidak disarankan. Kami merekomendasikan untuk mencopot pemasangan dengan
melakukan x dan kemudian menginstal ulang menggunakan x”. Saya merasa seperti itu
secara signifikan mengurangi jumlah orang dengan masalah ini.

Pikiran?

Catatan: Saya sepenuhnya menyadari bahwa saya dapat menggali perbedaannya, dan mungkin akan,
tetapi meminta ini untuk pengguna masa depan dan itu juga merupakan ucapan syukur dan saya ingin
Turki :)
Pada Kamis, 22 Nov 2018 pukul 13:19 Ronny Pfannschmidt [email protected]
menulis:

@AddoSolutions https://github.com/AddoSolutions perubahan yang Anda minta
untuk disebut setuptools

β€”
Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441099032 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/ADrjCTBfoKjBuYdceDeBM0bunByQ2bxJks5uxuq2gaJpZM4TWMU4
.

>

Nick Artman
+1 (330) 558-1230

wrt pembaruan paket yum - itu cukup banyak tugas distribusi - dan itu belum melakukannya, tetapi paket itu sendiri dalam beberapa kasus juga tidak

ketika datang ke distro perusahaan - semuanya sangat ketinggalan zaman - selesaikan dengan vendor Anda - upstream open source tidak memiliki kekuatan untuk itu dan tidak perlu menanggung beban dukungan untuk pilihan Anda di distro perusahaan - jadi pergilah ke vendor Anda

Kena kau. Jadi paket pip dalam hal ini akan dikelola oleh CentOS
grup, BUKAN oleh grup pip?
Pada Kamis, 22 Nov 2018 pukul 17:38 Ronny Pfannschmidt [email protected]
menulis:

wrt pembaruan paket yum - itulah tugas dari
distribusi - dan itu belum melakukannya, tetapi paketnya juga tidak
diri mereka sendiri dalam beberapa kasus

ketika datang ke distro perusahaan - semuanya sangat ketinggalan zaman -
selesaikan dengan vendor Anda - hulu open source tidak memiliki kekuasaan
itu dan tidak harus menanggung beban dukungan untuk pilihan Anda dalam
distro perusahaan - jadi buka vendor Anda

β€”
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441129627 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/ADrjCZAQ-ZBmpkm7izyKkE0WymSoT6M1ks5uxyd2gaJpZM4TWMU4
.

>

Nick Artman
+1 (330) 558-1230

@AddoSolutions masalahnya bukan pip, tetapi paket lain - pip hanya menghentikan kepura-puraan dan menjatuhkan dukungan untuk hal-hal yang sangat buruk, dan sekarang hal-hal berantakan pada aktor buruk seperti distro perusahaan - jadi Anda harus memilah paket dalam hal perusahaan distro dan dengan vendor Anda

hanya FYI - Anda kemungkinan akan diminta untuk menggunakan pip dari sistem (dikelola oleh vendor) dan bukan versi terbaru acak

Saya mendapatkan kesalahan ini untuk wxPython

Tidak dapat menghapus 'wxPython'. Ini adalah proyek yang terinstal distutil dan dengan demikian kami tidak dapat secara akurat menentukan file mana yang menjadi miliknya yang hanya akan menyebabkan penghapusan sebagian.

Itu tidak terletak di sitepackages melainkan di distpackages (yang masuk akal), tetapi rasanya tidak tepat menghapus file dari folder.

Ternyata saya telah menginstalnya melalui apt , jadi melakukan apt remove --autoremove python-wxgtk3.0 menghapus paket dari sistem saya.

Ini "bukan masalah kami, orang lain yang memperbaikinya" diharapkan dari pip. Perangkat lunak ini bahkan tidak berpura-pura mengelola konflik paket. Saya menerima pesan ini sebagai bagian dari kemungkinan penyebaran kontainer ke banyak sistem.

Terima kasih bagi Anda yang telah memberikan solusi. Saya telah mengubah urutan - "pip install docker" sebelum "pip install --upgrade pip" - berhasil kali ini. Semoga ini tidak menimbulkan masalah (seperti korupsi data) di masa depan.

Pembacaan saya tentang ini adalah bahwa kita harus menggunakan lingkungan virtual untuk melindungi diri kita dari keanehan di lingkungan kita... namun, saya dapat melewati ini untuk saat ini dengan menambahkan flag --user :

pip3 install -r requirements.txt --user

https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption -user

Anda juga dapat mencoba bekerja dengan versi yang tepat dari ketergantungan sementara yang diinstal oleh lingkungan Anda / distutils karena mungkin kompatibel. Dalam contoh saya, Pipenv akan menyelesaikan ketergantungan PyYAML dari awscli==1.15.85 dan apache-airflow==1.10.1 ke 3.13, tetapi sistem sudah menginstal 3.11. Melihat dependensi yang dideklarasikan pada mesin pengembangan lokal saya, 3.11 akan baik-baik saja untuk keduanya:

$ pipenv graph | egrep 'airflow|awscli|PyYAML'
apache-airflow==1.10.1
    - PyYAML [required: >=3.0, installed: 3.13]
awscli==1.15.85
  - PyYAML [required: >=3.10,<=3.13, installed: 3.13]

pipenv install PyYAML==3.11 akan menyematkan PyYAML di 3.11 dan membuat kedua paket senang:

$ pipenv install PyYAML==3.11
Installing PyYAML==3.11…
...
Locking [packages] dependencies…
βœ” Success!

$ pipenv graph | egrep 'airflow|awscli|PyYAML'
apache-airflow==1.10.1
    - PyYAML [required: >=3.0, installed: 3.11]
awscli==1.15.85
  - PyYAML [required: >=3.10,<=3.13, installed: 3.11]

Pipfile / Pipfile.lock saya selanjutnya diinstal dengan bersih di Ubuntu 14.04LTS menggunakan pipenv install --deploy --system .

Saya juga memeriksa dan PyYAML==3.11 diinstal melalui python3-yaml 3.11-3build1 dan itu adalah ketergantungan langsung dari cloud-init 18.4-0ubuntu1~16.04.2, yang kami gunakan secara ekstensif saat kami menjalankan EC2. Baik 18,04 LTS dan 18,10 datang dengan PyYAML 3.12, hanya 19,04 yang akan datang dengan PyYAML , yang merupakan versi terbaru pada hari ini.

Karena itu, hindari ketergantungan sistem dan masalah lingkungan dengan cara apa pun. Gunakan pipenv dan/atau virtualenv .

Saya menggunakan langkah-langkah berikut dan menyelesaikan masalah ini:

  1. Versi yang dikurangi,
    pip install --upgrade --force-reinstall pip==9.0.3
  2. Mencoba menginstal ulang paket
    pip install xxx --disable-pip-version-check
  3. Akhirnya, pulihkan versi terbaru untuk pip
    pip install --upgrade pip

Ini bekerja dengan baik untuk saya. Tetapi apakah memutakhirkan pip setelah ini memberikan masalah pada paket yang diinstal ??

@s-eswar Sejauh ini, kami tidak menemukan masalah tentang paket, tetapi mungkin satu situasi bahwa jika menggunakan versi tinggi dari paket pip install, kemudian menggunakan versi yang lebih rendah instal ulang atau periksa mungkin terjadi masalah ketergantungan. Saya menyarankan agar selalu menggunakan versi yang lebih rendah. Misalnya, pip 9.0.3.

@s-eswar Sejauh ini, kami tidak menemukan masalah tentang paket, tetapi mungkin satu situasi bahwa jika menggunakan paket instal pip versi tinggi, dan menggunakan versi yang lebih rendah, instal ulang atau periksa mungkin terjadi masalah ketergantungan. Saya menyarankan agar selalu menggunakan versi yang lebih rendah. Misalnya, pip 9.0.3.

@wangxf1987 tetapi untuk menggunakan pustaka ML dengan konfigurasi yang sama, kami tidak mendapatkan kesalahan terkait peningkatan/penggunaan versi yang lebih rendah.

@s-eswar Saya tidak yakin perpustakaan ML apakah prefek berfungsi di bawah versi yang lebih rendah. Saya menggunakan pip=9.0.3 akan bekerja dengan versi terbaru dari Kubernetes. Itu harus memeriksa file persyaratan apakah perlu versi terbaru dari pip atau pengujian di dev env.

Sejak pip 8, kami telah mencoba untuk berhenti melakukan ini, karena ini adalah penyebab masalah, tetapi upaya awal kami dibatalkan karena terlalu banyak orang yang terkena dampak pada saat itu. Dengan pip 10, kami akhirnya berhenti mencoba menghapus paket distutil, dan sekarang kami melaporkan masalah tersebut kepada pengguna seperti yang Anda lihat di sini.

Saya percaya bagian "sekarang kami melaporkan masalahnya kepada pengguna" disebut "mendorong hutang teknologi Anda ke orang lain". Saya ingin berterima kasih kepada semua orang karena membawa saya ke dalam kegagalan. Terutama karena saya bukan pengembang Python dan saya tidak tahu cara memperbaikinya. Saya mendapatkan waktu berjam-jam untuk masalah ini sekarang. Hore!

Hapus Paket Dist dan RUN

sudo rm -rf /usr/lib/python3/dist-packages/yaml

sudo rm -rf /usr/lib/python3/dist-packages/PyYAML-*

Menghapus folder dari distutil berfungsi

dengan memutakhirkan ke versi yang lebih baru, itu akan menyelesaikan masalah tetapi pip menimbulkan masalah yang sungguh ironis.

Solusinya adalah menghapus instalannya secara manual, jadi buka.../anaconda3/lib/python3.*/site-packages/ dan hapus semua file dan folder paket

@ramonamis sudo pip install --ignore-installed PyYAML

Ini berhasil memutakhirkannya untuk saya.

Ini juga berfungsi untuk imutils:

pip install --upgrade imutils --abaikan imutils yang diinstal

Saya menggunakan langkah-langkah berikut dan menyelesaikan masalah ini

  1. Versi yang dikurangi:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. Mencoba menginstal ulang paket:
    pip install xxx --disable-pip-version-check
  3. Akhirnya, pulihkan versi terbaru untuk pip:
    pip install --upgrade pip

itu bekerja untuk saya, Terima kasih!

Saya menggunakan langkah-langkah berikut dan menyelesaikan masalah ini

1. Reduced version:
   `pip install --upgrade --force-reinstall pip==9.0.3`

2. Tried to re-install package:
   `pip install xxx --disable-pip-version-check`

3. At last, recover the latest version for pip:
   `pip install --upgrade pip`

ini adalah solusi yang buruk. Saya tidak bisa melakukan apa-apa sekarang.

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-pip : Depends: python-pip-whl (= 9.0.1-2.3~ubuntu1) but 9.0.1-2.3~ubuntu1.18.04.1 is to be installed
               Recommends: python3-dev (>= 3.2) but it is not going to be installed
               Recommends: python3-setuptools but it is not going to be installed
               Recommends: python3-wheel but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
E: Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true: Success

Saya mengunci utas ini sekarang. Komentar awal

Apakah halaman ini membantu?
0 / 5 - 0 peringkat