Fehlermeldung bei "import"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hallo, was ist da falsch.
Die Meldung kommt immer.
Kruz vorher lief es noch.
Hm...

GRuss
Traceback (most recent call last):
File "D:/Python26/seriell0.py", line 1, in <module>
import serial , time
File "D:\Python26\serial.py", line 3, in <module>
AttributeError: 'module' object has no attribute 'Serial'

Code: Alles auswählen

import serial , time

ser = serial.Serial(3, 19200, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1, xonxoff=0, rtscts=0)
print ser.portstr
w = ser.write("PIN1_ON\r")
#time.sleep(0.2)
r = ser.read(10)
print r
ser.close()
BlackJack

@funkheld: Der *ganze* Traceback wäre hilfreich. Der Grund steht doch ganz unten, ohne den können wir auch nur raten.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Traceback (most recent call last):
File "D:/Python26/seriell0.py", line 1, in <module>
import serial , time
File "D:\Python26\serial.py", line 3, in <module>
AttributeError: 'module' object has no attribute 'Serial'
Das sagt ja eigentlich schon alles :lol:

Es gibt kein serial.Serial()
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hmmm..,"Traceback " was ist das?
D:/Python26/pythonw.exe -u "D:/Python26/seriell0.py"
Traceback (most recent call last):
File "D:/Python26/pebi-py/seriell0.py", line 1, in <module>
import serial , time
File "D:\Python26\pebi-py\serial.py", line 3, in <module>
AttributeError: 'module' object has no attribute 'Serial'
Das ist alles was unten in der Leiste steht von DrPython.

Gruss
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

funkheld hat geschrieben:Hmmm..,"Traceback " was ist das?
D:/Python26/pythonw.exe -u "D:/Python26/seriell0.py"
Traceback (most recent call last):
File "D:/Python26/pebi-py/seriell0.py", line 1, in <module>
import serial , time
File "D:\Python26\pebi-py\serial.py", line 3, in <module>
AttributeError: 'module' object has no attribute 'Serial'
Das ist alles was unten in der Leiste steht von DrPython.

Gruss
Traceback ist das was du da als Zitat hast.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Ich habe das doch installiert : pyserial-2.5.win32.exe

Und hier eine Demo, da kommt die gleiche Meldung.

Code: Alles auswählen

#! /usr/bin/env python
# Python Serial Port Extension for Win32, Linux, BSD, Jython
# see __init__.py
#
# (C) 2010 Chris Liechti <cliechti@gmx.net>
# this is distributed under a free software license, see license.txt

"""\
Some tests for the serial module.
Part of pyserial (http://pyserial.sf.net)  (C)2010 cliechti@gmx.net

Intended to be run on different platforms, to ensure portability of
the code.

For all these tests a simple hardware is required.
Loopback HW adapter:
Shortcut these pin pairs:
 TX  <-> RX
 RTS <-> CTS
 DTR <-> DSR

On a 9 pole DSUB these are the pins (2-3) (4-6) (7-8)
"""

import unittest
import threading
import time
import sys
import serial

#~ print serial.VERSION

# on which port should the tests be performed:
PORT = 0

if sys.version_info >= (3, 0):
    def data(string):
        return bytes(string, 'latin1')
else:
    def data(string): return string



class Test_Readline(unittest.TestCase):
    """Test readline function"""

    def setUp(self):
        self.s = serial.serial_for_url(PORT, timeout=1)

    def tearDown(self):
        self.s.close()

    def test_readline(self):
        """Test readline method"""
        self.s.write(serial.to_bytes("1\n2\n3\n"))
        self.failUnlessEqual(self.s.readline(), serial.to_bytes("1\n"))
        self.failUnlessEqual(self.s.readline(), serial.to_bytes("2\n"))
        self.failUnlessEqual(self.s.readline(), serial.to_bytes("3\n"))
        # this time we will get a timeout
        self.failUnlessEqual(self.s.readline(), serial.to_bytes(""))

    def test_readlines(self):
        """Test readlines method"""
        self.s.write(serial.to_bytes("1\n2\n3\n"))
        self.failUnlessEqual(
                self.s.readlines(),
                [serial.to_bytes("1\n"), serial.to_bytes("2\n"), serial.to_bytes("3\n")]
                )

    def test_xreadlines(self):
        """Test xreadlines method (skipped for io based systems)"""
        if hasattr(self.s, 'xreadlines'):
            self.s.write(serial.to_bytes("1\n2\n3\n"))
            self.failUnlessEqual(
                    list(self.s.xreadlines()),
                    [serial.to_bytes("1\n"), serial.to_bytes("2\n"), serial.to_bytes("3\n")]
                    )

    def test_for_in(self):
        """Test for line in s"""
        self.s.write(serial.to_bytes("1\n2\n3\n"))
        lines = []
        for line in self.s:
            lines.append(line)
        self.failUnlessEqual(
                lines,
                [serial.to_bytes("1\n"), serial.to_bytes("2\n"), serial.to_bytes("3\n")]
                )

    def test_alternate_eol(self):
        """Test readline with alternative eol settings (skipped for io based systems)"""
        if hasattr(self.s, 'xreadlines'): # test if it is our FileLike base class
            self.s.write(serial.to_bytes("no\rno\nyes\r\n"))
            self.failUnlessEqual(
                    self.s.readline(eol=serial.to_bytes("\r\n")),
                    serial.to_bytes("no\rno\nyes\r\n"))


if __name__ == '__main__':
    import sys
    sys.stdout.write(__doc__)
    if len(sys.argv) > 1:
        PORT = sys.argv[1]
    sys.stdout.write("Testing port: %r\n" % PORT)
    sys.argv[1:] = ['-v']
    # When this module is executed from the command-line, it runs all its tests
    unittest.main()

Gruss
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Was ist denn das für eine Datei?
D:/Python26/seriell0.py

Hast Du die angelegt? Sehr ungewöhnlicher Ort imho...

Heißt evtl. ein Script von Dir selber "serial.py"?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

D:/Python26/seriell0.py
Das ist meine oben.
Habe die jetzt alle hier drin : D:/Python26/demos/seriell0.py
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Heißt evtl. ein Script von Dir selber "serial.py"?
So hies mal eins, jetzt heisst es : seriell.py

Gruss
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Liegt noch irgendwo eine ``serial.pyc`` rum?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Liegt noch irgendwo eine ``serial.pyc`` rum?
Jup, das war. Diese Datei wurde vorher erstellt wo mein Programm noch "serial.py" hiess.
Habe sie gelöscht und jetzt läuft es. Oh...mann...

Danke.

Gruss
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@funkheld: Und was lernt uns das?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hmmm...., wusste nicht, das meine lesbare Datei, die schon gelöscht war eine andere hinterlässt.
Obwohl die nicht im Systemordner von Python lag, wurde sie als eine Datei vom Modul Serial gehalten.
Warum sucht Python nicht im Installordner von Serial?

Es gibt im ganzen "D:/" keine datei "serial.py"
Warum wird dann dieses eingegeben : import serial
Und die programme laufen jetzt.

Gruss
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

funkheld hat geschrieben:Obwohl die nicht im Systemordner von Python lag, wurde sie als eine Datei vom Modul Serial gehalten.
Warum sucht Python nicht im Installordner von Serial?
Weil Python in seinem Suchpfad sucht, an dessen erster Stelle standardmässig der Ordner des Moduls steht.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Weil Python in seinem Suchpfad sucht, an dessen erster Stelle standardmässig der Ordner des Moduls steht.
Eben, der liegt ja ganz woanders, und nicht in meinem Ordner "Demo"

Gruss
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

funkheld hat geschrieben:
Weil Python in seinem Suchpfad sucht, an dessen erster Stelle standardmässig der Ordner des Moduls steht.
Eben, der liegt ja ganz woanders, und nicht in meinem Ordner "Demo"
Du startest Doch ein Modul... und da sucht Python nun mal zuerst :roll:

Es ging mir mit meiner Nachfrage ja um den Erkenntnisgewinn, dass man seine eigenen Module nicht genauso benennen sollte, wie bereits existierende ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten