Python - 由于导入错误导致Modelica连接失败

时间:2013-10-15 12:37:58

标签: python import modelica dymola

我正在尝试使用Berkeley Simulations Lab提供的Python27块连接Modelica和Python:

http://simulationresearch.lbl.gov/modelica

我使用此块来调用Python函数:

    def Test2(WriteValues):
        ''' Connection Test - Works if started from Dymola
        '''
        #Doing nothing and returning the input
        ReturnList=WriteValues
        return (ReturnList)

完美无缺。

现在我需要导入一些模块

    #Importing Python modules works in general
    import sys
    import thread
    import time

也是如此

现在我只想导入一个不属于Python而是一个site-package的模块:

    def Test1(WriteValues):
    '''Connection Test - Doesnt work if started from Dymola
    '''
    #Importing some Bacpypes Module
    #Path is by default C:\Python27\Lib\site-packages\BACpypes-0.7-py2.7.egg\bacpypes
    #My os is win7
    from bacpypes.core import run
    #Doing nothing and returning the input
    ReturnList=WriteValues
    return (ReturnList)

这不起作用。如果我在函数内部或全局导入BACpypes模块并不重要 - 错误总是

    'module' object has no attribute 'argv'

同事们向我指出这可能与多重导入问题有关。 Modelica每隔10秒调用一次该函数(实时模拟)。

如果我在Modelica之外调用函数Test1,则没有问题。它只能使用Python27块失败!

有没有人知道如何让BACpypes导入工作?

更新2013-10-16:

我打印出sys.argv的值,用于Python目录中的脚本执行和Modelica的执行。

来自Python目录的

sys.argv:

    ['C:\\Python27\\Testcon.py']

sys.argv如果从Modelica内部调用函数:

    ['modpython']

这可能与我得到的错误信息有关吗?

1 个答案:

答案 0 :(得分:1)

该错误是由bacpypes使用sys.argv引起的,但Python解释程序未调用PySys_SetArgv

这将在下一版本的Modelica Buildings库中修复,请参阅https://github.com/lbl-srg/modelica-buildings/issues/191