在 RedHat 系统(RHEL 7/8/9)中安装 pythonnet 和 .NET Core 的完整指南

​1. 安装 .NET Core SDK​

​RHEL 8/9(推荐)​

bash

bash 复制代码
# 添加微软仓库
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

# 安装 .NET 8 SDK(包含运行时)
sudo dnf install -y dotnet-sdk-8.0

# 验证安装
dotnet --info
​RHEL 7​

bash

bash 复制代码
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install -y dotnet-sdk-8.0

​2. 安装 Python 3.8+​

bash

bash 复制代码
# RHEL 8/9 默认有Python 3.9+
sudo dnf install -y python3 python3-devel

# RHEL 7 需要启用SCL仓库
sudo yum install -y centos-release-scl
sudo yum install -y rh-python38 python38-devel
scl enable rh-python38 bash  # 临时启用Python 3.8

​3. 安装 pythonnet​

​方法1:通过 pip 安装(推荐)​

bash

bash 复制代码
# 安装编译依赖
sudo dnf install -y gcc glibc-devel python3-devel

# 安装 pythonnet
pip3 install pythonnet --pre  # 必须使用 --pre 安装预览版以支持 .NET Core
​方法2:源码编译安装​

bash

bash 复制代码
git clone https://github.com/pythonnet/pythonnet
cd pythonnet
pip3 install .

​4. 配置环境变量​

bash

bash 复制代码
# 永久生效(添加到 ~/.bashrc)
echo 'export PYTHONNET_PYDLL=libpython3.9.so.1.0' >> ~/.bashrc  # 根据实际Python版本修改
echo 'export PYTHONNET_RUNTIME=coreclr' >> ~/.bashrc  # 强制使用 .NET Core
source ~/.bashrc

​5. 验证安装​

python

bash 复制代码
import clr
from System import DateTime
print(DateTime.Now)

正常应输出当前时间,如:

markdown

bash 复制代码
2023-11-20 14:30:00

​6. 常见问题解决​

​问题1:找不到 libpython

bash

bash 复制代码
# 查找 libpython 路径
find /usr -name 'libpython*.so*'

# 手动指定路径(例如Python 3.8)
export PYTHONNET_PYDLL=/opt/rh/rh-python38/root/usr/lib64/libpython3.8.so.1.0
​问题2:pythonnet 仍尝试使用 Mono​

bash

bash 复制代码
# 强制使用 .NET Core
export PYTHONNET_RUNTIME=coreclr
​问题3:GLIBC 版本过低​

bash

bash 复制代码
# 升级到 RHEL 8+ 或使用独立部署
dotnet publish --self-contained -r linux-x64

​7. 完整卸载​

bash

bash 复制代码
# 卸载 pythonnet
pip3 uninstall pythonnet

# 卸载 .NET Core
sudo dnf remove -y dotnet-*
sudo rm -rf /usr/share/dotnet

​版本兼容性参考​

组件 RHEL 7 支持版本 RHEL 8/9 支持版本
.NET Core 6.0(需手动安装) 6.0/7.0/8.0
pythonnet ≥3.0.0(需源码编译) ≥3.0.0
Python 3.6-3.8(SCL仓库) 3.9+

建议新项目使用 ​​RHEL 8/9 + .NET 8 + pythonnet 3.0​​ 组合。

相关推荐
爱吃香蕉的阿豪12 小时前
乐思 AI 智能识别平台(基于 YOLO,.NET+Vue3 开发)开源指南
人工智能·yolo·开源·aigc·.netcore
时光追逐者17 小时前
C#/.NET/.NET Core优秀项目和框架2025年7月简报
c#·.net·.netcore
步、步、为营6 天前
.NET Core 3.1 升级到 .NET 8
microsoft·.net·.netcore
时光追逐者8 天前
C#/.NET/.NET Core技术前沿周刊 | 第 48 期(2025年7.21-7.27)
c#·.net·.netcore·.net core
爱吃香蕉的阿豪8 天前
SignalR 全解析:核心原理、适用场景与 Vue + .NET Core 实战
vue.js·microsoft·c#·.netcore·signalr
工藤新一OL10 天前
把xml的格式从utf-8-bom转为utf-8
xml·c#·asp.net·.netcore·visual studio
王柏龙10 天前
Asp.net core mvc中TagHelper的GetChildContentAsync和Content区别
mvc·.netcore
编程乐趣11 天前
基于.Net Core开源的库存订单管理系统
.netcore
lgaof65822@gmail.com15 天前
ASP.NET Core Web API 中集成 DeveloperSharp.RabbitMQ
后端·rabbitmq·asp.net·.netcore
爱吃香蕉的阿豪15 天前
在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型
微服务·.netcore·信息与通信·grpc