“ ImportError: ไม่มีโมดูลชื่อ _struct” การกำหนดค่า python-minimal


10

เมื่อฉันรันsudo apt-get upgradeข้อผิดพลาด dpkg จะปรากฏขึ้นและขัดจังหวะกระบวนการ

รายละเอียดผิดพลาด:

Setting up python-minimal (2.7.3-0ubuntu7.1) ...
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/compileall.py", line 16, in <module>
    import struct
  File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: No module named _struct
dpkg: error processing python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 255
dpkg: dependency problems prevent configuration of python:
 python depends on python-minimal (= 2.7.3-0ubuntu7.1); however:
  Package python-minimal is not configured yet.

และปัญหานี้นำไปสู่ชุดปัญหาการพึ่งพาเมื่อประมวลผลแพคเกจต่อไปนี้:

 python
 gwibber-service
 libgwibber3
 libgwibber-gtk3
 gwibber
 gwibber-service-facebook
 gwibber-service-identica
 gwibber-service-twitter
 python-all
 python-dev
 python-all-dev
 python-apt
 python-problem-report
 python-apport
 python-libxml2
 unity-lens-gwibber
 unity-scope-video-remote

สุดท้ายไม่มีอะไรที่ฉันสามารถทำได้สำหรับปัญหานี้ และหลายวันต่อมาไดเรกทอรีรูทเต็มและฉันไม่สามารถถอนการติดตั้งซอฟต์แวร์ใด ๆ ได้เนื่องจากปัญหานี้


อาจเป็นไปได้ซ้ำกับaskubuntu.com/q/270011/169736
Braiam

@Braiam ฉันพบคำถามนี้มาก่อน คำตอบนั้นแนะนำให้ติดตั้งไพ ธ อนใหม่ ฉันพยายามแล้วและล้มเหลว ขอขอบคุณ!
Java Xu

sudo apt-get สะอาดจะช่วยให้ได้กลับบางพื้นที่
frlan

ฉันเปลี่ยน/usr/bin/pythonsymlink ให้ชี้ไปที่python3.5และทำให้เกิดข้อผิดพลาดที่คล้ายกันมากกับสิ่งนี้ ไม่แน่ใจว่าทำไมอาจจะเป็นเพราะมีpython2.7deps ที่เสียเมื่อฉันเปลี่ยน symlink โดยไม่มีการเตือน IDK ออกจากที่นี่เพื่อนักเดินทางในอนาคต
quietContest

คำตอบ:


8

ติดตามการแก้ปัญหาโดย Soroosh หลามแตก (2.7) หลังจากสร้างและติดตั้งงูหลาม 2.6 ด้วยตนเอง

ป้อนsudo -iเพื่อเข้าถึงรูท

วางคำสั่งแล้วรอประมาณ 20 นาที ทำงานได้อย่างสมบูรณ์แบบ

for pkg in $(dpkg --get-selections | egrep -v 'deinstall' | egrep python | awk '{print $1}'); do  apt-get -y --force-yes install --reinstall $pkg ; done

1

ตกลงไปถึงแพ็คเกจฉันพบว่า python-minimal ไม่มี struct.py แต่ python-minimal2.7 ทำ

ลองใช้วิธีนี้ดูว่าช่วยคุณได้หรือไม่:

sudo apt-get install --reinstall python2.7-minimal
sudo apt-get upgrade

หากว่ามันไม่ได้ผลบางที PYTHONPATH ของคุณอาจจะเลอะเทอะ

nano ~/.bashrc

เพิ่มบรรทัดexport PYTHONPATH="${PYTHONPATH}:/usr/lib/python2.7"นั้น

source ~/.bashrc

และลองอัปเดตอีกครั้ง


แก้ไขเพื่อเพิ่ม "ส่งออก" มันเป็นชนิดที่จำเป็น;)
Chuck R

มีข้อความระบุว่า "ไม่พบแพ็คเกจ python-minimal2.7" คุณหมายถึง python2.7-minimal เมื่อฉันพยายามติดตั้ง python2.7 ใหม่ให้น้อยที่สุดปัญหาการพึ่งพาที่เหมือนกันก็เกิดขึ้น
Java Xu

อืมขอโทษที่ใช้เวลานานมากสำหรับฉันที่จะได้รับกลับมาหาคุณ ลองsudo apt-get clean sudo apt-get update sudo apt-get upgradeดู
Chuck R

1
ฉันกลัวว่ามันจะไม่ทำงาน หลังจากclean, updateและupgradeแล้วฉันพยายามที่จะติดตั้งใหม่python2.7-minimalแต่ปรากฏเดียวกันปัญหาการพึ่งพาและreinstallล้มเหลวอีกครั้ง
Java Xu

ดูเหมือนว่าฉันผิดเกี่ยวกับแพคเกจใด มันเป็น libpython2.7-minimal ที่สุดที่มี struct.py ตรวจสอบให้แน่ใจว่าติดตั้งแล้ว รุ่นปัจจุบันของ python2.7 ที่น้อยที่สุดที่คุณติดตั้งคืออะไร คำแนะนำ:dpkg -l | grep python2.7-minimal
Chuck R

1

ลองสิ่งนี้

sudo apt purge libpython*

ฉันลบ python2.7 และ 3.7 จากนั้นลบไฟล์ที่เกี่ยวข้องออกจากระบบ หลังจากนั้นฉันพบว่าฉันไม่สามารถติดตั้ง python2.7 ใหม่ได้ลองหลายวิธียังใช้งานไม่ได้รวมถึง:

ลบซอฟต์ลิงค์

เดลเสมือนจริง

autoremove

sudo dpkg --purge `dpkg --get-selections | grep deinstall | cut -f1`

จากนั้นฉันก็พบไฟล์ libpython บางตัวโดยค้นหา python ทั้งระบบ (อย่า rm ไฟล์จาก dir หากคุณไม่แน่ใจ) หลังจากลบlibpython*แพ็กเกจ (ฉันลบทีละไฟล์) python ติดตั้งสำเร็จ

หวังว่าสิ่งนี้จะช่วยให้บางคนมีปัญหาเหมือนกัน


0

ไม่ทราบว่าสิ่งนี้จะช่วยคุณได้หรือไม่มันคือการแทงในความมืด แต่ให้แน่ใจว่าเวอร์ชั่น Python เริ่มต้นของคุณถูกตั้งค่าเป็น 2.7

มีสามไฟล์ที่เกี่ยวข้องใน / usr / bin:

python (symlink)
python2.7
python3 (symlink)

ถ้าคุณทำls -l /usr/bin | grep pythonคุณจะเห็นสิ่งที่แต่ละ symlink ชี้ไปที่

ถ้ามันแสดงให้คุณเห็นpython -> python3หรือpython -> python3.3มีบางอย่างผิดปกติ ณ จุดนี้คุณจะต้องการ:

rm /usr/bin/python
ln -s /usr/bin/python2.7 /usr/bin/python

ขอบคุณสำหรับการตอบกลับของคุณ. ในของฉัน/usr/bin, จะนุ่มเชื่อมโยงกับpython python2.7
Java Xu

ทำไมนี้ ฉันเปลี่ยน symlink ของฉันให้ชี้ไปที่python3.5และมันก็อัดแน่นไปด้วยแพคเกจหลามจำนวนมากและaptเช่นกัน ทำไมฉันถึงตั้งต้น Python3 ไม่ได้? วิธีที่ถูกต้องคืออะไร?
quietContest
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.