Я смог импортировать модули, добавив Lib / site-пакеты в переменную PYTHONPATH (а не в PATH), которая добавляет папку в sys.path. Для любых других библиотек Python и пользовательского кода Python было необходимо добавить соответствующую папку в PYTHONPATH.
аюсь запустить пример Embedded Python в .NET изhttps://github.com/pythonnet/pythonnet, Я следовал статьям по устранению неполадок, чтобы установить правильные% PYTHONPATH% и% PYTHONHOME% для моей среды anaconda в каталоге программы.
После активации моей среды anaconda я успешно импортировал sys и imp в качестве теста, а также успешно использовал PythonEngine.RunSimpleString (), но пример с ошибкой завершается неудачно сPython.Runtime.PythonException: ImportError: нет модуля с именем 'numpy'
импорт numpy из python в этой среде прошел успешно, но этот и другие пакеты не могут быть импортированы в pythonnet.
Версия Pythonnet: 2.3 x64 (устанавливается с помощьюКонда установить -c pythonnet pythonnet)
Версия Python: Python 3.5 x64 (анаконда)
Операционная система: Windows 10
Следующий код выдает ошибку:
static void Main(string[] args)
{
string envPythonHome = AppDomain.CurrentDomain.BaseDirectory + "cntk-py35";
string envPythonLib = envPythonHome + @"\Lib";
Environment.SetEnvironmentVariable("PYTHONHOME", envPythonHome, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PATH", envPythonHome + ";" + Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine), EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH", envPythonLib, EnvironmentVariableTarget.Process);
PythonEngine.PythonHome = envPythonHome;
PythonEngine.PythonPath = Environment.GetEnvironmentVariable("PYTHONPATH");
using (Py.GIL())
{
dynamic np = Py.Import("numpy");
Console.WriteLine(np.cos(np.pi * 2));
dynamic sin = np.sin;
Console.WriteLine(sin(5));
double c = np.cos(5) + sin(5);
Console.WriteLine(c);
dynamic a = np.array(new List<float> { 1, 2, 3 });
Console.WriteLine(a.dtype);
dynamic b = np.array(new List<float> { 6, 5, 4 }, dtype: np.int32);
Console.WriteLine(b.dtype);
Console.WriteLine(a * b);
Console.ReadKey();
}
}
Похоже, что любой пакет под site-packages в моей среде тоже не работает. Добавление в% PATH% не сработало. Есть ли способ заставить pythonnet распознавать и загружать эти модули?