我正在尝试使用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']
这可能与我得到的错误信息有关吗?
答案 0 :(得分:1)
该错误是由bacpypes
使用sys.argv
引起的,但Python解释程序未调用PySys_SetArgv
。
这将在下一版本的Modelica Buildings库中修复,请参阅https://github.com/lbl-srg/modelica-buildings/issues/191