当前位置: 首页 > article >正文

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

​1. 安装 .NET Core SDK​

​RHEL 8/9(推荐)​

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

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

# 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

# 安装编译依赖
sudo dnf install -y gcc glibc-devel python3-devel# 安装 pythonnet
pip3 install pythonnet --pre  # 必须使用 --pre 安装预览版以支持 .NET Core
​方法2:源码编译安装​

bash

git clone https://github.com/pythonnet/pythonnet
cd pythonnet
pip3 install .

​4. 配置环境变量​

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

import clr
from System import DateTime
print(DateTime.Now)

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

markdown

2023-11-20 14:30:00

​6. 常见问题解决​

​问题1:找不到 libpython

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

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

bash

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

​7. 完整卸载​

bash

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

​版本兼容性参考​

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

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

http://www.lryc.cn/news/2395700.html

相关文章:

  • vr中风--数据处理模型搭建与训练
  • Socket网络编程之UDP套件字
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • Bert和GPT区别
  • 聊一聊接口测试中缓存处理策略
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 如何使用.Net Reactor 批量加密 DLL
  • 基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
  • Intellij IDEA 查找接口实现类的快捷键
  • 鸿蒙仓颉开发语言实战教程:自定义tabbar
  • 03.MySQL表的操作详解
  • 28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
  • MySQL 事务解析
  • 题海拾贝:压缩字符串
  • 【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
  • 振动力学的三类基本问题
  • 04.MySQL数据类型详解
  • 移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)
  • CS144 - Lecture 2
  • B站视频下载器 v1.0.4|免登录下载1080P视频
  • AIGC学习笔记(8)——AI大模型开发工程师
  • [蓝桥杯]剪格子
  • 明远智睿SSD2351开发板:语音机器人领域的变革力量
  • Mybtais框架各配置文件主要内容详解(一)
  • Co-IP—验证蛋白互作的不二之选
  • 数据可视化(第4、5、6次课)
  • DAY 18 推断聚类后簇的类型
  • 结合源码分析Redis的内存回收和内存淘汰机制,LRU和LFU是如何进行计算的?
  • ESG体系
  • 基于 KubeKey 3.1.9,快速部署 K8s 1.33.0 高可用集群