我正在尝试使用IronPython从VB.Net运行python脚本。到目前为止,我已经安装了Python和IronPython。我有如下所示的ExecPython方法。当我调用一个简单的print/hello-world类型的脚本时,它工作得很好。这个DBTest.py脚本只是使用pyodbc连接到数据库并执行一个基本的select查询
我在source.Execute(scope)行中得到的错误是“IronPython.Runtime.Exceptions.ImportException:'没有名为'pyodbc'的模块”
我已经使用pip安装pyodbc安装了pyodbc。当我以空闲状态运行DBTest.py脚本时,它运行良好。 我不确定这是否是一个限制,或者在设置中是否缺少一些东西
提前感谢您的帮助
Sub ExecPython(ByVal argv As List(Of String))
Dim engine As ScriptEngine = Python.CreateEngine
Dim scriptPath As String = "C:\scripts\DBTest.py"
Dim source As ScriptSource = engine.CreateScriptSourceFromFile(scriptPath)
argv.Add("")
engine.GetSysModule.SetVariable("argv", argv)
engine.SetSearchPaths({"C:\Users\MYUSERNAME\AppData\Local\Programs\Python\Python39\Scripts",
"C:\Users\MYUSERNAME\AppData\Local\Programs\Python\Python39\include",
"C:\Users\MYUSERNAME\AppData\Local\Programs\Python\Python39\Lib",
"C:\Program Files\IronPython 3.4\Lib"})
Dim eIO As ScriptIO = engine.Runtime.IO
Dim errors As New MemoryStream
eIO.SetErrorOutput(errors, Text.Encoding.Default)
Dim results As New MemoryStream
eIO.SetOutput(results, Text.Encoding.Default)
Dim scope As ScriptScope = engine.CreateScope
source.Execute(scope)
Console.WriteLine("ERRORS:")
Console.WriteLine(FormatResult(errors.ToArray))
Console.WriteLine("")
Console.WriteLine("RESULTS:")
Console.WriteLine(FormatResult(results.ToArray))
End Sub
下面是我正在调用的python脚本。当我从空闲状态运行模块时,它会运行
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=MYSERVERNAME;'
'Database=MYDBNAME;'
'Trusted_Connection=yes;')
cursor = conn.cursor() cursor.execute('SELECT * FROM dbo.TABLENAME')
for row in cursor:
print(row)
已经有一段时间了,也许你已经找到了解决办法
但一般来说,为了能够使用“模块”,您需要导入clr并使用addReference函数。然后必须使用python样式导入名称空间
例如:
相关问题 更多 >
编程相关推荐