【问题标题】:Pythonnet Import Error Visbrain in Anaconda 3Anaconda 3 中的 Pythonnet 导入错误 Visbrain
【发布时间】:2018-08-15 18:28:05
【问题描述】:

环境:

  • Pythonnet 版本:2.3.0,在 Amaconda3 中使用 pip 安装
  • Python 版本:3.6.6 与 Anaconda 一起使用
  • Visual Studio 2017 社区
  • 操作系统:Windows 7,64 位

我正在运行 Pythonnet 的 Visbrain 模块。 我在 Anaconda 3 中创建了一个名为 py36 的虚拟环境。Anaconda 3 在 D 驱动器中。 尝试在我的 c# 程序中运行以下代码。

using (Py.GIL())
{
 dynamic np = Py.Import("visbrain");
}

但它会弹出一个错误

Python.Runtime.PythonException: 'ModuleNotFoundError : No module named 'visbrain''

堆栈跟踪:

Python.Runtime.PythonException
  HResult=0x80131500
  Message=ModuleNotFoundError : No module named 'visbrain'
  Source=Python.Runtime
  StackTrace:

我在 Lib\site-packages 下有 visbrain。

尝试了解决方案但没有成功:

1) 在环境变量中添加 PATH、PYTHONHOME。 路径:D:\Anaconda3\envs\py36; PYTHONHOME : D:\Anaconda3\envs\py36;

2) pythonnet Embedding Python in .net example failing to load module 添加了 PYTHONPATH : D:\Anaconda3\envs\py36\Lib\site-packages;

===

我很奇怪“numpy”模块也在 Lib\site-packages 中。

当我尝试下面的例子时

dynamic np = Py.Import("numpy");

没关系。

想知道这里有什么问题以及如何解决这个问题,谢谢。

【问题讨论】:

    标签: c# importerror python.net


    【解决方案1】:

    根据https://github.com/pythonnet/pythonnet/wiki/Troubleshooting-on-Windows,-Linux,-and-OSX

    提到

    "Unable to load DLL pythonXX": CPython 没有安装,或者没有 在 %PATH% 和 %PYTHONHOME% 环境变量中注册。 或者在初始化之前设置 PythonEngine.PythonHome 属性 Python 运行时。

    您无需手动设置 PythonHome 和 Path,而是通过编码设置它们。

    PythonEngine.Initialize(); 之前 只记得设置PATH和PYTHONHOME,就像例子

    // Modify Path
    string path = @"d:\Anaconda3\envs\py36;" + Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine); 
    
    // Set Path
    Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.Process);
    
    // Set PythonHome
    Environment.SetEnvironmentVariable("PYTHONHOME", @"d:\Anaconda3\envs\py36", EnvironmentVariableTarget.Process);
    
    // Set PythonPath
    // ONLY SET THIS IF YOU ARE SURE WHAT YOU ARE DOING
    Environment.SetEnvironmentVariable("PYTHONPATH", @"d:\Anaconda3\envs\py36\Lib", EnvironmentVariableTarget.Process);
    

    【讨论】:

      【解决方案2】:

      我在使用 Miniconda 时遇到了类似的问题,显然 Python.NET 不适用于 conda。见this answer:最好是重新安装python(不带conda)。

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 1970-01-01
        相关资源
        最近更新 更多