python2.7 ถูกทำลายโดยข้อผิดพลาดในการนำเข้าอ่อนแอโปรดช่วยด้วย


27

ฉันเพิ่งอัปเดตจาก 16.04 เป็น 17.10 และทุกครั้งที่ฉันพยายามเรียกใช้คำสั่ง python2.7 ฉันได้รับข้อผิดพลาดนี้:

pip install --upgrade pip
Traceback (most recent call last):
File "/home/XXXX/bin/pip", line 7, in <module>
    from pip import main
  File "/home/XXXX/local/lib/python2.7/site-packages/pip/__init__.py", 
line 5, in <module>
    import logging
  File "/usr/lib/python2.7/logging/__init__.py", line 26, in <module>
    import sys, os, time, cStringIO, traceback, warnings, weakref, 
collections
  File "/home/XXXX/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

ผู้ใช้รายอื่นมีปัญหาที่คล้ายกัน แต่สิ่งนี้มีผลต่อโปรแกรมหลามที่ฉันพยายามเรียกใช้ ฉันไม่สามารถติดตั้งอะไรก็ได้ผ่าน pip หรือใช้สคริปต์หลาม ฉันไม่รู้จะทำอย่างไรความช่วยเหลือจะได้รับการชื่นชมอย่างมาก

ผลลัพธ์ของ "python --version" คือ

Python 2.7.12

อย่างไรก็ตาม "update python" สร้าง:

python is already the newest version (2.7.14-2ubuntu1).

ฉันปรับปรุง 17.04-17.10 ImportError: cannot import name _remove_dead_weakrefและหันหน้าไปทางเดียวกัน Python ของฉันคือ 2.7.14
Csaba

ในกรณีของฉันฉันใช้สภาพแวดล้อมเสมือนจริงและฉันสงสัยว่าหลามในสภาพแวดล้อมเสมือนนั้นไม่ได้ซิงค์กับเวอร์ชั่นของระบบมากจนเกิดข้อผิดพลาดนี้ขึ้น ฉันสงสัยว่าการสร้างสภาพแวดล้อมเสมือนใหม่จากพื้นดินอาจแก้ปัญหาของฉันได้แม้ว่าจะพยายามติดตั้งแพ็คเกจทั้งหมด :(
Csaba Toth

คำตอบ:


26

นี่ไม่ใช่วิธีการแก้ปัญหาของ Ubuntu แต่เนื่องจากคำถามนี้ปรากฏขึ้นสูงในผลการค้นหาข้อผิดพลาดฉันอยากจะบอกว่าฉันมีข้อผิดพลาดนี้ใน OSX เพราะระบบเริ่มต้นของฉัน Python คือ 2.7 และฉันติดตั้ง "python @ 2" ในขณะที่ ติดตั้งแพคเกจอื่น

หากคุณใช้ OSX และกำลังใช้งาน homebrew อยู่ให้ตรวจสอบแพ็คเกจที่ติดตั้งด้วย brew โดยเรียกใช้brew listและหาก "python @ 2" ปรากฏในรายการนั้นและ Python 2.7 เป็นระบบ Python ของคุณคุณสามารถลบแพ็คเกจที่ติดตั้ง Brew ด้วยbrew remove python@2 --ignore-dependencies


2
สิ่งนี้เกิดขึ้นหลังจากการอัพเกรด Brew แทนที่หลายแพ็คเกจด้วยแพ็คเกจ @ version ใหม่ ... ขอบคุณ!
Hugo H

2
สิ่งนี้ช่วยฉัน เมื่อทำงานswiftบน Mac ฉันได้รับข้อผิดพลาดดังกล่าวข้างต้น กลับกลายเป็นว่าเป็นเพราะมันใช้ python2 จากการชง การลบมันแก้ไขปัญหาของฉัน
jmurphyau

2
ขอบคุณสำหรับสิ่งนี้. มันช่วยแก้ไขlldbคำเตือนของฉัน
Steven Hepting

ขอบคุณสำหรับหัวขึ้น. ฉันเพิ่งอัปเดต symlink ของฉันใน / usr / local / bin / python เพื่อชี้ไปที่ Homebrew python แทนที่จะเป็น python system
ด้าน

9

ในกรณีที่คุณใช้สภาพแวดล้อมเสมือนคุณจะต้องสร้างมันขึ้นมาใหม่ ความเป็นไปได้อีกอย่างก็คือคุณใช้เวอร์ชั่นไพ ธ อนที่ติดตั้งมาหรือติดตั้งด้านข้างซึ่งขัดแย้งกับระบบหนึ่ง ในกรณีนี้คุณต้องคัดแยกว่าโฟลเดอร์และพา ธ ที่ถูกต้องจะถูกกำหนดค่าให้ดูจากสภาพแวดล้อมต่างๆ


3

ในกรณีของฉันมันเป็นข้อผิดพลาดที่เกี่ยวข้องกับสภาพแวดล้อมเสมือน ดังนั้นการสร้างสภาพแวดล้อมเสมือนจริงจึงเหมาะกับฉัน นี่คือรายการคำสั่งที่อาจช่วยคุณในสิ่งเดียวกัน

การติดตั้งสภาพแวดล้อมเสมือนจริง:

pip install virtualenv

การสร้างสภาพแวดล้อมเสมือนใหม่:

virtualenv -p {env_name}

การเปิดใช้งานสภาพแวดล้อมเสมือนจริง:

source env_name/bin/activate

ปิดใช้งานสภาพแวดล้อมเสมือนจริงของคุณ:

deactivate

OP ไม่ได้กล่าวถึง env เสมือนดังนั้นคำตอบของคุณจะไม่แก้ไขปัญหาเมื่อไม่ได้ใช้ env เสมือน
MikeM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.