Я планирую написать новый код для устаревшего приложения ASP на Python, и я столкнулся с каким-то странным поведением. Если я пишу функцию в Python, я могу легко вызвать ее из блока VBScript. Однако, если я пытаюсь вызвать функцию, определенную в VBScript, из python, я получаю сообщение об ошибке:
Python ActiveX Scripting Engine error '80020009'
Traceback (most recent call last): File "<Script Block >", line 3, in <module> PrintVBS() NameError: name 'PrintVBS' is not defined
/test.asp, line 20
Вот краткий пример, демонстрирующий проблему:
<script language="Python" runat="server">
def PrintPython():
Response.Write( "I'm from python<br>" )
</script>
<script language="vbscript" runat="server">
Sub PrintVBS()
Response.Write( "I'm from VBScript<br>" )
End Sub
</script>
<script language="vbscript" runat="server">
PrintVBS()
PrintPython()
</script>
<script language="python" runat="server">
PrintPython() # code is fine up to here,
PrintVBS() # no error if you comment this line
</script>
Есть ли у кого-нибудь понимание этого поведения? Есть обходные пути?
Заметьте, я знаю, что могу выбросить свой код VBScript в файл WSC, но я считаю, что работать с ними - ужасная боль, и я хотел бы избежать этого, если это возможно.