簡體   English   中英

IronPython:從 c# 啟動.py 腳本時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM