python311.dll未加载到本地iis中.net core中的pythonnet库中,但在visual sudio 2019中的iis表达中工作

rhfm7lfc  于 2023-10-19  发布在  Python
关注(0)|答案(2)|浏览(229)

我使用pythonnet_netstandard_py37_win 2.5.2在.net core3.1中运行numpy优化方法,当我在visual studio 2019中运行时(iis express,任何CPU,调试)它工作正常,但当在iis上发布它时(在我的machie上)它给了我错误:

`System.TypeInitializationException: The type initializer for 'Delegates' threw an exception.

 System.DllNotFoundException: Could not load python311.dll.

 System.ComponentModel.Win32Exception (126): The specified module could not be found.

还设置了windows环境变量中的环境(关于调试模式下的工作),
搜索很多问题都没有给给予我好的答案,这行是属于我的代码:

Environment.SetEnvironmentVariable("PYTHONNET_PYDLL", "C:/Users/AppData/Local/Programs/Python/python311.dll", EnvironmentVariableTarget.Process);

 Runtime.PythonDLL = "python311.dll";

 PythonEngine.Initialize();

        using (Py.GIL())
        { ....

有人能帮我一下吗???

u0sqgete

u0sqgete1#

这一行:

Runtime.PythonDLL = "python311.dll";

完全覆盖此行的效果:

SetEnvironmentVariable("PYTHONNET_PYDLL", "C:/Users/AppData/Local/Programs/Python/python311.dll", EnvironmentVariableTarget.Process);

所以Python.NET知道你想要python311.dll,但不知道在哪里可以找到它。

kmb7vmvb

kmb7vmvb2#

您遇到的错误消息表明,在IIS上发布应用程序时,加载python311.dll库时出现问题。
您需要确保运行IIS应用程序池的用户帐户具有访问Python DLL及其文件夹所需的权限。
此外,检查IIS应用程序池是否使用正确的位数(32位或64位)。如果您的Python安装和PythonNet是64位的,请确保您的IIS应用程序池配置为64位执行。

相关问题