【发布时间】:2015-01-19 06:38:43
【问题描述】:
我们有一个 C# 应用程序,我们需要提供 Python 脚本接口。现在它的实现方式是:
- 托管脚本库(编译为 DLL)完成所有核心工作
- C++/CLI 包装器(包装托管库并编译为静态库)执行所有本机托管数据转换
- boost 扩展项目 (BOOST_PYTHON_MODULE)(编译为动态库,扩展名手动更改为 pyd)与 C++/CLI 包装层通信。
我遇到的问题是,每次任何 python 应用程序尝试使用该接口时,它都会抱怨找不到核心托管程序集。我必须将它放在 Python 安装目录中,或者将其部署到 GAC 中。
我启用了 Windows Fusion 日志记录,发现它只会探测 Python 目录中的程序集,我想知道是否有一种方法可以指示 Python 在我们的应用程序安装目录中搜索 .NET 程序集,或者更确切地说,任何自定义目录?
我尝试了this post 中的所有方法,但这对我不起作用。任何帮助将不胜感激!
PS:
- 我们知道还有其他 Python 选项,例如 IronPython 或 Python .NET,但我们需要向后兼容,因此还需要 C++ 接口。
-
如果你好奇我得到了什么错误,这里是:
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“ScriptingInterface,版本=1.3.9.0,Culture=neutral,PublicKeyToken=160df4f7a3973cc2”或其依赖项之一。该系统找不到指定的文件。 在 NativeCommunicator.{ctor}(NativeCommunicator* )
【问题讨论】:
-
请将这些 cmets 添加到问题本身
-
您是否将路径附加到 python 中的 sys.path 中?
-
@denfromufa 是的,我将路径添加到 sys.path 中,我可以从控制台显示中看出这一点。但是还是不行