Python导入问题

Python导入问题,python,import,Python,Import,我收到以下代码错误: name错误:未定义名称“ser” Mainpythonfile.py: import serial from commands import * ############## Initializing COM -Port ##################### ser = serial.Serial() ser.baudrate = 19200 ser.port = 'COM3' ser.timeout = 0.1 ser.open() print("Serial

我收到以下代码错误:

name错误:未定义名称“ser”

Mainpythonfile.py:

import serial
from commands import *

############## Initializing COM -Port #####################
ser = serial.Serial()
ser.baudrate = 19200
ser.port = 'COM3'
ser.timeout = 0.1
ser.open()
print("Serial Port geöffnet: ", ser.is_open)
write("ADR 06")
def write(text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
ser = serial.Serial()
...
write(ser, "ADR 06")
def write(ser, text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
commands.py:

import serial
from commands import *

############## Initializing COM -Port #####################
ser = serial.Serial()
ser.baudrate = 19200
ser.port = 'COM3'
ser.timeout = 0.1
ser.open()
print("Serial Port geöffnet: ", ser.is_open)
write("ADR 06")
def write(text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
ser = serial.Serial()
...
write(ser, "ADR 06")
def write(ser, text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')

我的代码有什么问题,希望您能帮助我:)

commands.py不知道Mainpythonfile.py中的变量

但是,您可以将变量传递给函数:

Mainpythonfile.py:

import serial
from commands import *

############## Initializing COM -Port #####################
ser = serial.Serial()
ser.baudrate = 19200
ser.port = 'COM3'
ser.timeout = 0.1
ser.open()
print("Serial Port geöffnet: ", ser.is_open)
write("ADR 06")
def write(text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
ser = serial.Serial()
...
write(ser, "ADR 06")
def write(ser, text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
commands.py:

import serial
from commands import *

############## Initializing COM -Port #####################
ser = serial.Serial()
ser.baudrate = 19200
ser.port = 'COM3'
ser.timeout = 0.1
ser.open()
print("Serial Port geöffnet: ", ser.is_open)
write("ADR 06")
def write(text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')
ser = serial.Serial()
...
write(ser, "ADR 06")
def write(ser, text):
    ser.write(bytes("{}\r".format(text), 'utf-8'))    
    #print(bytes("{}\r".format(text), 'utf-8'))
    return ser.readline().decode('utf-8')

请注意,
ser
现在是函数
write
的一个参数,您正在从主模块传递它。

最快的解决方案是将ser添加为
write
的参数,并在主脚本中调用实例化的ser时将其传递到中。

ser
未在commands.py中定义?谢谢,这很有效。但是,难道没有更时尚的方式来处理这个问题吗?假设我必须在导入的模块中使用来自其他模块的多个函数。。。例如,简单的导入时间必须在每个模块中……不,没有。有内置的,像str,dict,list。。。这是众所周知的。还有一些模块、函数、变量,…,您需要通过
import
或将它们作为参数传递给您的模块。