在 Python 中带参数的错误导入 main
Posted
技术标签:
【中文标题】在 Python 中带参数的错误导入 main【英文标题】:Bug import main with arguments in Python 【发布时间】:2011-04-03 04:16:15 【问题描述】:在一个脚本中,我试图从另一个带有参数的脚本中导入主模块。
我收到错误消息“NameError:未定义全局名称‘模型’”。
如果有人看到错误,我将不胜感激!
我的代码:
脚本1
#!/usr/bin/python
import sys
import getopt
import pdb
import shelve
class Car:
""" class representing a car object """
def __init__(self, model):
self.model = model
class Porsche(Car):
""" class representing a Porsche """
def __init__(self, model):
Car.__init__(self, model)
print "I have a Porsche but no driving licence : too bad !"
# Main
def main(argv):
settings = shelve.open('mySettings')
global model
try:
opts, args = getopt.getopt(argv, "m:", ["model="])
except getopt.GetoptError, err:
print " wrong argument, exiting "
sys.exit()
for opt, arg in opts:
if opt in ("-m", "--model"):
model = arg
def choose_car(model):
""" Creates the car"""
my_Porsche = Porsche(model)
choose_car(model)
if __name__ == "__main__":
main(sys.argv[1:])
脚本2
#!/usr/bin/python
import os
import sample
import sys
def main(argv):
script1.main("-m Carrera")
# Main program
if __name__ == '__main__':
main(sys.argv[1:])
rgds,
【问题讨论】:
【参考方案1】:argv
是一个列表。因此,您应该将script1.main
称为
script1.main(['-m', 'Carrera'])
或者,等价的,
script1.main('-m Carrera'.split())
【讨论】:
以上是关于在 Python 中带参数的错误导入 main的主要内容,如果未能解决你的问题,请参考以下文章
在标准输入上使用相对导入的Python 3脚本给出错误:没有名为'__main__.XXX'的模块; '__main__'不是包