2012-07-09 69 views
77

我想在運行Debian的Raspberry Pi上用Python 2.6訪問串口。 我叫serial.py腳本嘗試導入pySerial:Python的AttributeError:'模塊'的對象沒有屬性'串行'

import serial 
ser = serial.Serial('/dev/ttyAMA0', 9600) 
ser.write("hello world!") 

出於某種原因,拒絕建立與此錯誤的串行連接:當我試圖在交互式Python鍵入相同的代碼

AttributeError: 'module' object has no attribute 'Serial' 

解釋它仍然不起作用。

奇怪的是,它曾經在幾個小時前工作。

可能是什麼問題?我試圖修復這一段時間,再次安裝pySerial,重寫我的代碼,雙重檢查串口等。

在此先感謝!

+4

你試過'從串口輸入串口嗎? – mVChr 2012-07-09 22:12:51

+0

您是否卸載了模塊或更改了python版本? – inspectorG4dget 2012-07-09 22:12:55

+1

回溯說......? – 2012-07-09 22:16:38

回答

64

您正在導入模塊,而不是類。所以,你必須寫下: from serial import serial

+3

工作!謝謝。 – 2012-07-09 22:29:06

+3

導入模塊時,我多次遇到同樣的問題。我不明白爲什麼它在某些情況下工作(例如,當您查看[* serial * website](http://pyserial.sourceforge.net/shortintro.html)中的一些示例) – VGO 2012-07-09 22:39:05

+9

我嘗試過。不行。錯誤將是「ImportError:無法導入名稱串行」 – 2014-05-12 10:10:54

128

我爲那些犯了同樣錯誤的人添加了這個解決方案。

在大多數情況下:重命名項目文件'serial.py'並刪除serial.pyc(如果存在),那麼你可以做簡單的'導入串行'沒有屬性錯誤。

當您的python文件名爲'something.py'時導入'something'時會出現問題。

+2

是的..我把我的測試文件命名爲「serial.py」,所以導入的串行導入本身。 – PedroMorgan 2014-04-28 03:37:47

+3

太棒了。你解決了我的問題。非常感謝 – 2014-05-12 10:13:12

+2

哇,沒有看到即將到來。花了45分鐘拉出頭髮。 – Ultratrunks 2014-07-24 04:18:31

2

如果你是無助的我一樣,試試這個:

列表的所有子模塊「串行」(或任何包您有麻煩)與這裏所描述的方法:List all the modules that are part of a python package

在我案件中,問題一個接一個解決。

...看起來像我的錯誤...如果你有循環依賴也可能發生

1

此錯誤。檢查你的進口,並確保你沒有任何週期。

1

這個問題是你的proyect被命名爲serial.py,並且導入的庫也是名稱序列,更改名稱和那是所有。

+0

這正是我的情況是什麼問題。從不選擇與導入庫相同的名稱。 – JohnnyFromBF 2018-02-16 09:05:33

38

我不小心安裝了'serial'(sudo python -m pip install serial)而不是'pySerial'(sudo python -m pip install pyserial),導致了相同的錯誤。

如果前面提到的解決方案不適合您,請仔細檢查您是否安裝了正確的庫。

+0

解決方法是卸載兩者,然後重新安裝pyserial。 – jcaron 2018-02-20 17:39:51

相關問題