質問編集履歴
1
エラーの箇所
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -5,26 +5,92 @@
|
|
|
5
5
|
|
|
6
6
|
### 前提
|
|
7
7
|
|
|
8
|
+
参考にしたサイトは以下になります。
|
|
9
|
+
https://tpsxai.com/preparing_pythonnet/
|
|
8
|
-
|
|
10
|
+
自分なりに参考にしたサイトを見てコーディングしたのですがエラーが発生します。
|
|
9
11
|
|
|
12
|
+
|
|
13
|
+
またわからない問題が二つ発生しています。
|
|
14
|
+
①デバックした際に以下のエラーが発生します。
|
|
15
|
+
|
|
10
16
|
### 発生している問題・エラーメッセージ
|
|
17
|
+
System.DllNotFoundException: 'DLL 'python38' を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)'
|
|
11
18
|
|
|
12
19
|
|
|
20
|
+
このエラーが PythonEngine.PythonHome = PYTHON_HOME;の部分を指しています。
|
|
13
21
|
|
|
14
|
-
|
|
22
|
+
②pythonファイルで作成したクラスを使用したいのですが、using (Py.GIL())の処理部分をどうしようすればいいのかわかりません。
|
|
23
|
+
この質問に関しては大雑把な質問で申し訳ないのですがご教授いただければ幸いです。
|
|
15
24
|
|
|
16
25
|
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
17
31
|
### 該当のソースコード
|
|
32
|
+
public Form1()
|
|
33
|
+
{
|
|
34
|
+
|
|
35
|
+
InitializeComponent();
|
|
18
36
|
|
|
19
|
-
string scriptPath = @"pythonファイルのpath";
|
|
20
|
-
var engine = IronPython.Hosting.Python.CreateEngine();
|
|
21
|
-
|
|
37
|
+
//
|
|
22
|
-
|
|
38
|
+
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
|
|
39
|
+
//
|
|
40
|
+
}
|
|
23
41
|
|
|
42
|
+
/// <summary>
|
|
43
|
+
/// プロセスの環境変数PATHに、指定されたディレクトリを追加する(パスを通す)。
|
|
44
|
+
/// </summary>
|
|
45
|
+
/// <param name="paths">PATHに追加するディレクトリ。</param>
|
|
46
|
+
public static void AddEnvPath(params string[] paths)
|
|
47
|
+
{
|
|
48
|
+
var envPaths = Environment.GetEnvironmentVariable("PATH").Split(Path.PathSeparator).ToList();
|
|
49
|
+
foreach (var path in paths)
|
|
50
|
+
{
|
|
51
|
+
if (path.Length > 0 && !envPaths.Contains(path))
|
|
52
|
+
{
|
|
53
|
+
envPaths.Insert(0, path);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
Environment.SetEnvironmentVariable("PATH", string.Join(Path.PathSeparator.ToString(), envPaths), EnvironmentVariableTarget.Process);
|
|
57
|
+
}
|
|
58
|
+
.
|
|
59
|
+
.
|
|
60
|
+
.
|
|
61
|
+
省略
|
|
24
62
|
|
|
63
|
+
private void Form1_Load(object sender, System.EventArgs e)
|
|
64
|
+
{
|
|
25
65
|
|
|
66
|
+
// *-------------------------------------------------------*
|
|
26
|
-
|
|
67
|
+
// * python環境の設定
|
|
68
|
+
// *-------------------------------------------------------*
|
|
27
69
|
|
|
70
|
+
// python環境にパスを通す
|
|
71
|
+
// TODO: 環境に合わせてパスを直すこと
|
|
72
|
+
var PYTHON_HOME = Environment.ExpandEnvironmentVariables(@"C:\Users\ユーザー名\anaconda3\envs\仮想環境フォルダ");
|
|
73
|
+
// pythonnetが、python本体のDLLおよび依存DLLを見つけられるようにする
|
|
74
|
+
//上記で作成したAddEnvPath()メソッドを使用する
|
|
75
|
+
AddEnvPath(
|
|
76
|
+
PYTHON_HOME,
|
|
77
|
+
Path.Combine(PYTHON_HOME, @"Library\bin")
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
// python環境に、PYTHON_HOME(標準pythonライブラリの場所)を設定
|
|
81
|
+
PythonEngine.PythonHome = PYTHON_HOME;
|
|
82
|
+
// pythonの処理をする=numpyの定義とバージョンをラベルに表示させる
|
|
83
|
+
using (Py.GIL())
|
|
84
|
+
{
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
28
94
|
### 試したこと
|
|
29
95
|
|
|
30
96
|
プロジェクトの参照を自分なりに調べて確認したのですが、その問題は当てはまらなかった気がします。
|
|
@@ -32,5 +98,6 @@
|
|
|
32
98
|
どうかよろしくお願いします。
|
|
33
99
|
|
|
34
100
|
### 補足情報(FW/ツールのバージョンなど)
|
|
101
|
+
.NETFrameWork4.7.2 visualstudio2022
|
|
35
102
|
|
|
36
103
|
|