ติดตั้ง pyusb แล้ว: 'ImportError: ไม่มีโมดูลชื่อคอร์'


11

เกี่ยวกับราสเบอร์รี่ของฉันพี่ฉันติดตั้งlibusbและผ่านpyusbsudo apt-get install libusb-dev python-usb

แต่การใช้งานรหัสหลาม ( pyrowเพื่ออ่านข้อมูลจากเครื่องพาย) ทำให้ฉันมีข้อผิดพลาดนี้ที่import usb.core:

ImportError: ไม่มีโมดูลชื่อคอร์

ข้อผิดพลาดนี้ชี้ให้เห็นว่าฉันติดตั้งไม่pyusbถูกต้องดังนั้นฉันจึงทำการติดตั้งอีกครั้งด้วยตนเอง (การดาวน์โหลดและการใช้งานsudo python setup.py install) แต่วิธีนี้ไม่สามารถแก้ไขได้

ฉันคิดว่าปัญหาอาจมีบางอย่างที่เกี่ยวข้องกับไดเรกทอรี/usr/local/lib/python2.7/dist-packages/usb: บนแล็ปท็อป Ubuntu ของฉันโฟลเดอร์นี้มีอยู่และมี (ในหมู่อื่น ๆ ) core.pyแต่โฟลเดอร์ใน Raspberry Pi ดูเหมือนว่าจะไม่มีอยู่จริง lsในไดเรกทอรีหลักแสดงรายการโฟลเดอร์ แต่กำลังติดตั้งกับโฟลเดอร์ไม่ทำงาน ...

ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันต้องใช้ pyusb รุ่นเฉพาะกับ Raspberry Pi หรือไม่?

  • ฮาร์ดแวร์: Raspberry Pi รุ่น B
  • ระบบปฏิบัติการ: Raspbian Wheezy (build 2013-02-09)

คำตอบ:


8

โปรดทำตามขั้นตอนและดูว่าใช้งานได้หรือไม่

$ sudo apt-get update
$ sudo apt-get install python-pip  #if you don't have pip installed already
$ sudo pip install pyusb

'sudo pip install pip' ให้ฉันว่า การอัพเกรดจะให้ "ความต้องการที่ทันสมัยอยู่แล้ว" ฉันยังลองติดตั้ง pyusb-1.0 ด้วยตนเองตามที่ Krzysztof Adamski แนะนำ แต่ปัญหายังคงมีอยู่ สามารถใช้ขั้นตอนข้างต้นในการติดตั้งใหม่ได้หรือไม่
A. Goossens

ข้ามขั้นตอน sudo apt-get install python-pi เพียงพิมพ์ sudo pip install pyusb ที่น่าใช้สำหรับคุณ
SteveIrwin

ขออภัยพิมพ์ผิด ฉันหมายถึง 'sudo pip install pyusb' ให้ "ความต้องการที่พึงพอใจ"
A. Goossens

1
@ A.Goossens: คุณควรถอนการติดตั้งครั้งแรกที่pyusbคุณอาจติดตั้งก่อนหน้านี้ แม้ว่าจะง่ายสำหรับแพ็คเกจที่คุณติดตั้งapt-getแต่อาจยากสำหรับแพ็คเกจที่ติดตั้งด้วยตนเอง
Krzysztof Adamski

เพราะฉันจำไม่ได้ว่า pyusb และ libusb รุ่นใดที่ฉันติดตั้งอยู่แล้วฉันจึงทำการติดตั้ง raspbian ใหม่และใช้ขั้นตอนจาก Stevelrwin พวกเขาทำงาน! ตอนนี้ pyrow ทำงานเหมือนจับใจ! เห็นได้ชัดว่า libusb ไม่จำเป็นต้องมีหรือติดตั้งไว้แล้วตามค่าเริ่มต้น ขอบคุณที่ช่วยฉันออกไป!
A. Goossens

7

pyusb ไลบรารี่มีสองเวอร์ชั่น:

  • เสถียร (0.4.x)
  • ภายใต้การพัฒนา (1.0.x)

การกระจาย Debian มีเพียงstableเวอร์ชั่นเท่านั้นและนี่คือรุ่นที่คุณติดตั้งโดยใช้apt-getคำสั่ง

ขณะนี้pyrowกำลังพยายามนำเข้าusb.coreซึ่งมีอยู่ใน1.0.xรุ่นของไลบรารีเท่านั้น และแน่นอนว่าpyrow'sเว็บไซต์ระบุว่าต้องใช้ pyusb รุ่น 1.0 นี่คือสาเหตุที่คุณมีปัญหา

ดังนั้นในการใช้งานpyrowคุณต้องมีpyusb1.0.x ซึ่งไม่พร้อมใช้งานใน Debian ดังนั้นคุณจึงไม่สามารถติดตั้งได้โดยใช้ apt-get ทางออกที่ง่ายที่สุดสำหรับปัญหานี้คือสิ่งที่ @Stevelrwin ติดอยู่ - การใช้pip installจะติดตั้ง pyusb สาขา 1.0.x คุณอาจต้องการใช้virtualenvถ้าคุณไม่ต้องการทำให้ระบบของคุณสกปรกด้วยห้องสมุดบางแห่งที่ไม่ได้มาจากแพ็คเกจ Debian


ขอบคุณที่ทำให้ฉันเห็นปัญหาได้ชัดเจนยิ่งขึ้น! อย่างไรก็ตามปัญหายังคงมีอยู่ ดูความคิดเห็นที่ Stevelrwin
A. Goossens

3

ลองสิ่งนี้มันใช้งานได้กับ Raspberry PI 3b + สำหรับ Python 3.5.3

sudo apt-get install python-usb python3-usb

หลังจากรันโค้ด usb.core ที่นำเข้าใช้งานได้

(ราสเบอร์รี่ PI 3b + - Python 3.5.3 - 2019)


1

ยูเรก้า! ฉันได้แก้ไขปัญหาของ Raspberry Pi ซึ่งติดตั้งทั้ง Python เวอร์ชั่น 2.7 และ 3.4.2 แล้ว

ขั้นตอนที่ 1: คัดลอกไลบรารี่ usb ของไพ ธ อนจากเวอร์ชันเป็น 2.7 ถึงเวอร์ชัน 3.4

มีสองโฟลเดอร์ใน /usr/local/lib/python/2.7/dist-packages/

pyusb-1.0.0.egg-info และ

ยูเอสบี

สิ่งเหล่านั้นถูกคัดลอกไปยัง /usr/local/lib/python/3.4/dist-packages/

ขั้นตอนที่ 2: ใช้ easy_install เพื่อระบุเครื่องมือการติดตั้ง Python เวอร์ชัน 3.4 ถึง Python ชื่อบรรทัดคำสั่ง "pip": sudo easy_install-3.4 pip

ขั้นตอนที่ 3: ติดตั้งไลบรารี pyusb ลงในบรรทัดคำสั่ง Python เวอร์ชัน 3.4: sudo pip3.4 install pyusb

ตอนนี้ควรติดตั้งไลบรารี pyusb ใน Python เวอร์ชัน 3.4 แทน (หรือเพิ่มเติมจาก) เวอร์ชันเริ่มต้นซึ่งเป็นเวอร์ชั่น 2.7


-1

ผมมีปัญหาเดียวกัน.

ฉันปรับสาเหตุอย่างน้อยในเครื่องของฉัน:

Raspberry pi มาพร้อมกับการติดตั้ง Python สองตัว: 2.x และ 3.x แต่สคริปต์การติดตั้งของ pyusb จะติดตั้งซอฟต์แวร์ในเวอร์ชั่น 2.x โดยค่าเริ่มต้น

ดังนั้นเมื่อเราพยายามใช้มันในเวอร์ชัน 3.x ข้อผิดพลาด: "ImportError: ไม่มีโมดูลชื่อคอร์" ขึ้นมาโดยอัตโนมัติ

ฉันยังไม่มีวิธีแก้ปัญหาสำหรับตอนนี้ แต่คิดว่าไม่น่าจะมีปัญหาในการค้นหา


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