Я смог импортировать модули, добавив 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 распознавать и загружать эти модули?

Ответы на вопрос(1)

Ваш ответ на вопрос