Skip to content

Commit b769519

Browse files
committed
Add extension folders to IronPython search path
1 parent 4d9f5b7 commit b769519

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

Bonsai.Scripting.IronPython.Design/Bonsai.Scripting.IronPython.Design.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<PackageTags>Bonsai Rx Scripting Iron Python Design</PackageTags>
77
<UseWindowsForms>true</UseWindowsForms>
88
<TargetFramework>net462</TargetFramework>
9-
<VersionPrefix>2.7.0</VersionPrefix>
9+
<VersionPrefix>2.7.1</VersionPrefix>
1010
</PropertyGroup>
1111
<ItemGroup>
1212
<PackageReference Include="jacobslusser.ScintillaNET" Version="3.6.3" />

Bonsai.Scripting.IronPython/Bonsai.Scripting.IronPython.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<Description>Bonsai Scripting Library containing IronPython scripting infrastructure for Bonsai.</Description>
66
<PackageTags>Bonsai Rx Scripting Iron Python</PackageTags>
77
<TargetFramework>net462</TargetFramework>
8-
<VersionPrefix>2.7.0</VersionPrefix>
8+
<VersionPrefix>2.7.1</VersionPrefix>
99
</PropertyGroup>
1010
<ItemGroup>
1111
<PackageReference Include="IronPython" Version="2.7.5" />

Bonsai.Scripting.IronPython/PythonEngine.cs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,37 @@
11
using Microsoft.Scripting.Hosting;
2+
using System;
3+
using System.Collections.Generic;
24
using System.IO;
35
using System.Reflection;
46

57
namespace Bonsai.Scripting.IronPython
68
{
79
static class PythonEngine
810
{
11+
const string ExtensionsPath = "Extensions";
12+
const string RepositoryPath = "Packages";
13+
914
internal static ScriptEngine Create()
1015
{
11-
var engine = global::IronPython.Hosting.Python.CreateEngine();
12-
var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
13-
var libPath = Directory.GetDirectories(Path.Combine(basePath, "../../../"), "IronPython.StdLib.*");
16+
var searchPaths = new List<string>();
17+
var editorPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
18+
var editorExtensionsPath = Path.Combine(editorPath, ExtensionsPath);
19+
var editorRepositoryPath = Path.Combine(editorPath, RepositoryPath);
20+
var customExtensionsPath = Path.Combine(Environment.CurrentDirectory, ExtensionsPath);
21+
searchPaths.Add(customExtensionsPath);
22+
searchPaths.Add(editorExtensionsPath);
23+
24+
var libPath = Directory.GetDirectories(editorRepositoryPath, "IronPython.StdLib.*");
1425
if (libPath.Length == 1)
1526
{
16-
var lib = Path.Combine(libPath[0], $"content/Lib");
27+
var lib = Path.Combine(libPath[0], "content", "Lib");
1728
var sitePackages = Path.Combine(lib, "site-packages");
18-
engine.SetSearchPaths(new[] { lib, sitePackages });
29+
searchPaths.Add(lib);
30+
searchPaths.Add(sitePackages);
1931
}
32+
33+
var engine = global::IronPython.Hosting.Python.CreateEngine();
34+
engine.SetSearchPaths(searchPaths);
2035
return engine;
2136
}
2237
}

0 commit comments

Comments
 (0)