[英]IronPython: Error when launching .py script from c#
我遇到了和這個人類似的問題: IronPython: Microsoft.Scripting.SyntaxErrorException: 'unexpected token '=''不幸的是,我們在那個線程上沒有答案。
這是我的代碼:
var engine = Python.CreateEngine();
var scope = engine.CreateScope();
try
{
engine.ExecuteFile(String.Concat(Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName, "\\Client.py"), scope);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
然后是 the.py (它還沒有做任何事情,真的):
#imports
import os
import tempfile
#Test
print("Here we go.")
獲取我的 python 文件的完整路徑的可憎行為是試圖檢查路徑是否錯誤或找不到文件,但事實並非如此,但我把它留在那里。 調試器顯示路徑正確。 但是,它總是在engine.ExecuteFile(...)
上失敗。 並捕獲一個異常,根據調試器是null
。 我收到了這個錯誤:
Microsoft.Scripting.SyntaxErrorException
然后搞砸設置,將工具>選項>調試>常規>“僅啟用我的代碼”從選中更改為未選中,這導致我不再收到SyntaxErrorException ,但現在是這樣,但它仍然在同一行失敗,除了仍然是null
的例外:
Microsoft.Dynamic.dll 中的 IronPython.Runtime.Exceptions.ImportException
在這一點上,我不知道我是朝着正確的方向邁出了一步還是后退了一步。 有人能幫忙嗎?
編輯:我需要糾正這個。 當前有一個例外狀態:“沒有名為 os 的模塊”,而不僅僅是null
,考慮到異常類型,這很有意義。
我將 Lib 文件夾移動到我的項目文件夾中,並通過它擴展了搜索路徑,如下所示:
String projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName;
var engine = Python.CreateEngine();
var libs = new[]
{
String.Concat(projectPath, "\\Lib")
};
var pySP = engine.GetSearchPaths();
foreach (String resource in libs)
{
pySP.Add(resource);
}
在這個線程之后: IronPython:沒有名為 json 的模塊。
然后我撤消了對調試設置所做的更改,最后添加了 NuGet 包。 也許現在添加的搜索路徑和新添加的包有冗余,但我不願意測試我的運氣並撤消任何更改。 這是我的.csproj
文件,供在同一個 position 中可能需要它的任何人使用:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="IronPython" Version="2.7.10" />
<PackageReference Include="IronPython.Interpreter" Version="2.7.4" />
<PackageReference Include="IronPython.StdLib" Version="2.7.10" />
</ItemGroup>
</Project>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.