2013-12-13 5 views
7

У меня проблема с моей программой python. Я написал программу, чтобы получить данные (температуру) от arduino до моей базы данных малины pi sqlite. но он дает мне ошибку в строке4 (серийный импорт), говорящий: «ИмпортError: Нет модуля с именем serial». Я использую python3 и уже обновил pyserial. Я новичок в Python, так что я делаю какие-то ошибки ...python no module named serial

#!/ussr/bin/python 
# -*- coding: utf-8 -*- 

import serial 
import datetime 
import sqlite3 as lite 
import sys 
import time 

ser = serial.Serial('/dev/ttyACM1', 9600, timeout=1) 
ser.open() 

count = 0 

con = lite.connect('realtime_data.db') 

try: 
     while 1: 
     indata = ser.readline() 
     current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 
     count = count + 1 

     print (count) 

     with con: 
      cur = con.cursor() 
      cur.execute("INSERT INTO Temperatures VALUES(?, ?, ?)", (count, current_time, indata)) 
      if count > 100: 
      cur.execute("DELETE FROM Temperatures") 
      count = 0 

     # time.sleep(3) #upload to database every 5 seconds 

except KeyboardInterrupt: 
     ser.close() 
+0

Я не был запрограммирован с Arduino или raspberrypi, но есть общая проблема при установке модулей python, с которыми я иногда сталкиваюсь. Иногда некоторые модули устанавливаются для python2.x вместо 3.x Вы можете проверить, для какой версии они были установлены, открыв интерактивную оболочку и попытавшись импортировать там модуль. –

+0

Практически невозможно дать вам осмысленный совет, поскольку мы не знаю, где находится ваш python 3. Вероятно, вы столкнулись с этой проблемой, потому что 'pip' установил пакет для python 2 вместо 3. Мой совет - просто использовать python 2, между ними нет существенных различий. –

+0

да, вы правы. pip установил пакет для python2 Я только что проверил это. есть способ установить его на python3? Я имею в виду, что это моя первая программа на питоне, и я не очень хорош в этом. каковы различия между ними? эта программа взяла меня на некоторое время, чтобы написать ... – AlbertSm

ответ

15

Вот вопрос о How to install pip with Python 3?. После этого, вы можете использовать pip установить pyserial совместимый с питона-3.x, как следующее:

$ sudo pip3 install pyserial 

Вот doc о том, как установить pyserial, используя его исходный код, совместимый с питона-3.x

PS: Если на вашей платформе есть как python-2.x, так и python-3.x, например Arch Linux, если вы хотите установить некоторые пакеты, вы должны быть осторожны, чтобы выбрать, какая версия python должна быть совместима с, а затем используйте pip2 или pip3, чтобы получить и установить эти пакеты.

+0

спасибо за помощь. это сработало. Я все равно удаляю python2, но для установки pip на python3 я использовал sudo apt-get install python3-pip после того, как sudo pip-3.2 установил pyserial. проблема решена, но теперь я сталкиваюсь с другой проблемой. он говорит, что порт уже открыт. – AlbertSm

+0

@AlbertSm, используйте команду оболочки 'netstat -npl', чтобы узнать, какой процесс использует порт, и решать вам, нужно ли его убивать. – flyer

+1

в коде я пытался открыть порт, но я не знал, что python3 уже делает это за вас. это была ошибка. теперь он работает – AlbertSm

1

Если имя файла, которое вы сохранили, совпадает с именем модуля, оно даст вам ошибку. Например, если ваше имя файла «serial.py», и у вас есть последовательный импорт, тогда он сначала проверит serial.py для указанных вами методов.