我想使用“clr”方法将基于 C# 代码的 dll 文件运行到我的 pySpark 笔记本(在 databricks 中)中。不幸的是,我无法弄清楚我的“程序集名称/.NET 引用”应该是什么。该文件位于正确的位置,并且当我尝试使用 C# 'Namespace.Class.Function' 或直接位置到文件时没有拼写错误(我已经尝试了多种方法,但仍然存在同样的问题)。
这是我的方法:
!pip install pythonnet
%sh
sudo apt-get update
sudo apt-get install -y mono-complete
%sh
echo '#!/bin/bash
sudo apt-get update
sudo apt-get install -y mono-complete' > conf/install_mono.sh
import os
import clr
import sys
# Set environment variables
os.environ["PYTHONNET_PYDLL"] = "dbfs:/FileStore/shared_uploads/[email protected]/SampleClassLibraryProject.dll"
# Add a reference to your .NET assembly
clr.AddReference("SampleClassLibraryProject") #Here is the problem!!!
# Set the .NET runtime based on environment variables
sys.path.append("/Users/admin/anaconda3/lib/python3.11/site-packages") # Replace with your Python home path
# Now try importing the necessary module
from SampleClassLibraryProject.Algebra import Addition # Import specific namespace and class
# Example usage:
result = Addition.Add(2, 3)
print(result)
不要使用
dbfs:/
作为文件路径的前缀 - 原因是 .Net 无法理解 DBFS 文件系统 URL,并且需要本地文件路径。