Open-Source PyMOL 安装构建全指南:从 README 到源码的分子可视化系统构建解析
图形学生物信息学科学计算科研【免费下载链接】pymol-open-sourceOpen-source foundation of the user-sponsored PyMOL molecular visualization system.项目地址https://gitcode.com/gh_mirrors/py/pymol-open-source点击查看免费下载本文基于 Open-Source PyMOL 仓库的 README 及其直接关联的 INSTALL、DEVELOPERS、LICENSE 文档展开梳理该项目的定位、依赖要求、完整安装命令、构建参数默认值与运行方式并延伸到测试框架与贡献规范。读完后你将能够在自己的机器上从源码编译安装 PyMOL正确配置PYMOL_PATH等环境变量理解 pip 安装背后自定义构建后端PEP 517的工作机制并知道如何运行其 Python 与 C 双层测试。一、项目定位Open-Source PyMOL 是什么README.md 对项目的定义十分凝练Open-source foundation of the user-sponsored PyMOL molecular visualization system.即 Open-Source PyMOL 是用户资助型 PyMOL 分子可视化系统的开源基础商业版Incentive PyMOL则提供维护与支持。仓库 pyproject.toml 中的项目描述进一步说明了能力范围description PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source PyMOL is free to everyone! 从这段描述可以确认其核心功能域蛋白质、小分子、电子密度、表面与轨迹的 3D 可视化外加分子编辑、光线追踪ray tracing和电影动画生成。README 正文其余部分由三个入口构成本文逐一深入README 章节指向文档本文对应章节InstallationINSTALL第三、四、五节ContributingDEVELOPERS第八节LicenseLICENSE第二节License 说明版权方为 Schrodinger, LLC以BSD-like license发布LICENSE 全文授予使用、复制、修改、分发及分发修改版的权利前提是保留版权声明、不得使用 Schrodinger, LLC 名称做广告宣传同时附有条款要求含 PyMOL 源码的衍生软件在宣传中必须与 Schrodinger 官方产品明确区分PyMOL 商标声明。README 顶部还带有 CI 徽章对应仓库中的 build.yml GitHub Actions 工作流该工作流在 ubuntu-22.04 上对 Python 3.10 ~ 3.13 做矩阵构建测试命令为pymol -ckqy testing/testing.py --run all二、仓库结构速览帮助理解安装产物从哪里来理解安装流程前先快速建立对源码布局的认知以 INSTALL 与 setup.py 中的引用为准layer0/、layer1/、layer2/、layer3/、layer4/、layer5/C 核心按渲染OpenGL/GLUT、CGO、对象模型ObjectMolecule.cpp、命令执行Executive.cpp等分层组织layer0/Version.h 保存版本号构建时由setup.py的get_pymol_version()从中提取modules/pymol/、modules/chempy/、modules/pmg_tk/、modules/pmg_qt/Python 包pymol主模块、化学编辑库、两套 GUIdata/运行时数据着色器、位图、启动脚本、示例文件安装后构成$PYMOL_PATH/datacontrib/独立许可证的第三方模块champ 手性计算、mmtf-c 解析器、OpenVR 交互等layerCTest/C 单元测试基于 catch2通过--testingTrue启用testing/Python 端测试框架与数据用 pytest 驱动。三、编译安装依赖要求INSTALL 列出了源码编译的全部前置条件。核心依赖是依赖是否必需说明C17 编译器gcc 8必需CMakeLists.txt 中以target_compile_features(... cxx_std_17)强制 C17CMake 3.13必需与cmake_minimum_required(VERSION 3.13)一致Python 3.9必需与 pyproject.toml 的requires-python 3.9一致pip build 子模块必需pip install buildconda 包名为python-buildOpenGL / GLEW / glm必需渲染三件套libpng / freetype必需图像与字体PmwPython Megawidgets可选传统 GUI/插件需要GLUTfreeglut可选--gluttrue启用libxml2可选COLLADA 导出--libxmlno关闭msgpack-c 2.1.5 / mmtf-cpp可选快速 MMTF 加载与导出--use-msgpackcno关闭PyQt5 / PyQt6 / PySide2 / PySide6可选缺失时若以--gluttrue编译则回退 Tk 界面catch2可选--testingtrue启用 C 层测试openvr 1.0.x可选--openvrtrue启用 VR 支持libnetcdf可选VMD molfile 插件--vmd-pluginsno关闭注意一个细节pyproject.toml 中运行时唯一声明的 Python 依赖是numpy2.0其余freetype、GLEW 等都是 C 层系统库需要预先安装到系统或写入搜索路径——这正是 INSTALL 中PREFIX_PATH等环境变量的用途。四、安装命令与环境变量4.1 两条标准安装命令INSTALL 给出两种安装方式# 干净构建并安装 pip install . # 推荐开发者使用保留构建输出、支持增量构建、同时构建 C 单元测试 pip install --verbose --no-build-isolation --config-settings testingTrue .第二条命令里有两个关键点值得展开--no-build-isolation跳过 pip 的隔离构建环境直接复用本机已装好的 CMake/numpy/setuptools[build-system] requires声明的三件套--config-settings testingTruepip 把该键值传给 PEP 517 构建后端。本项目用了一个自定义后端 _custom_build/backend.pypyproject.toml 中backend-path [_custom_build]、build-backend backend指定class _CustomBuildMetaBackend(backend_class): def run_setup(self, setup_scriptsetup.py): if self.config_settings: flags [ f--{k}{v} for k, v in self.config_settings.items() ] sys.argv sys.argv[:1] [build_ext] flags sys.argv[1:] return super().run_setup(setup_script)也就是说pip 的--config-settings kv会被原样翻译成setup.py build_ext --kv的命令行参数。这就解释了为什么所有构建开关既可以从 pip 传--config-settings gluttrue也可以直接python setup.py build_ext --gluttrue。4.2 构建开关与默认值setup.py 用 argparse 定义了完整的开关集其默认值集中在 setup.py参数默认值作用--glutFalse链接 GLUT传统 GUI--osx-frameworksTruemacOS 上用原生框架而非 XQuartz--jobs/-j处理器数并行编译--libxmlTrue关闭则禁用 COLLADA 导出--use-openmp非 macOS 为yesOpenMP 支持--use-vtkmno用 VTK-m 做等值面可选 2.0~2.3--use-msgpackcguessc11/c/guess/no控制 MMTF 快速路径--testingFalse构建 C 层测试catch2--openvrFalseVR 支持--vmd-pluginsTrueVMD molfile 插件依赖 libnetcdf布尔参数通过str2boolsetup.py解析接受true/yes与false/no。依赖库的搜索路径由PREFIX_PATH环境变量控制setup.py 的get_prefix_path()冒号分隔的目录列表构建时在其中查找include、lib、lib64等子目录。例如把 msgpack-c 装在~/msgpack-c、mmtf-cpp 装在~/mmtf-cpp则export PREFIX_PATH$HOME/mmtf-cpp:$HOME/msgpack-c其余标准环境变量沿用工具链惯例INSTALLCXX/CC指定编译器命令CXXFLAGS/CFLAGS/CPPFLAGS/LDFLAGS分别传编译与链接参数。4.3 特殊安装选项与环境变量--pymol-path指定 PyMOL 数据安装目录对应$PYMOL_PATH见 setup.py 中install_pymol_path的处理--no-launcher跳过pymol启动脚本的安装系统包管理器场景下PACKAGING 推荐python setup.py install --pymol-path/usr/share/pymol并把modules/下的 Python 包放入 site-packagesdata/、scripts/放入/usr/share/pymol/运行时必须。4.4 运行环境变量的自动推导PACKAGING 说明常规安装无需手动设置环境变量PyMOL 启动时会按优先级自行推导PYMOL_PATH 依次取 - pymol python module /pymol_path - 启动脚本匹配 modules/pymol/__init__.py 时取 modules 目录的父目录 - sys.prefix /share/pymol PYMOL_DATA $PYMOL_PATH/data PYMOL_SCRIPTS $PYMOL_PATH/scripts因此只要pymolPython 包正常安装数据文件路径就能被自动找到只有当数据被安装到非默认位置时才需要显式export PYMOL_PATH...modules/pymol/init.py 开头的文档字符串也明确提示了这一点。五、启动方式INSTALL 指明安装后的入口$PYMOL_PATH/bin/pymol # 或 $PYTHONUSERBASE/bin/pymolpymol命令由 pyproject.toml 的入口点声明提供pymol pymol:launch。除此之外modules/pymol/init.py 的文档注释列出了全部支持方式# 1) 直接以脚本运行 shell python /path/to/pymol/__init__.py [args] # 2) pymol 模块在 PYTHONPATH 中时 shell python -m pymol [args]# 3) 在 Python 主线程内阻塞解释器 import pymol pymol.launch() # 4) 主线程内派生新线程带 GUImacOS 不支持此方式 import pymol pymol.finish_launching()modules/pymol/main.py 则实现了python -m pymol入口sys.exit(pymol.launch())。六、构建产物与 CMake 的关系顶层 CMakeLists.txt 并不完整——它依赖setup.py先行收集源码get_sources()扫描各 layer 目录下的.c/.cpp并通过变量TARGET_NAME、ALL_SRC、ALL_COMP_ARGS等注入add_library(${TARGET_NAME} SHARED ${ALL_SRC}) target_compile_features(${TARGET_NAME} PRIVATE cxx_std_17)即 CMake 只负责把 C 核心编成一个共享库供 Python 扩展加载而依赖发现、源码收集、着色器文本生成create_shadertext见 setup.py 与独立脚本 create_shadertext.py、PYMOL_PATH数据复制、启动脚本生成都由setup.py编排。这是阅读构建逻辑时应记住的主从关系pip → 自定义后端 → setup.py → CMake。版本号并非独立配置而是解析 layer0/Version.h 中_PyMOL_VERSION ...宏得到setup.py。结合 ChangeLog 可见当前主线版本为3.1.02025-01-24新增 BCIF 导入、压缩 SDF 导入、delete_states命令等上一版 3.0.02024-04-09引入了卤键检测、fnab命令与改进的 CGO builder API。七、测试Python 框架 C 单元测试 CI仓库提供三层测试能力均可从 README 的 CI 徽章入口找到实证Python 测试框架testing/pytest 驱动配置见 testing/pytest.ini。testing/README.md 说明每个测试方法基于一个干净的 PyMOL 会话reinitialize并从测试文件所在目录启动运行方式pymol -cq /path/to/pymol-testing/runall.pml # 或 PyMOL 命令行内 PyMOL run /path/to/pymol-testing/testing.py PyMOL run_testfiles path/to/*.pyC 单元测试layerCTest/catch2 框架。构建时需--testingTrue开发者安装命令即如此CI 工作流中通过pip install -v --config-settings testingTrue .[dev]启用。CI 工作流build.ymlLinux 矩阵覆盖 Python 3.10~3.13系统依赖包括catch2、libfreetype6-dev、libglew-dev、libglm-dev、libmsgpack-dev、libnetcdf-dev、libpng-dev、libxml2-dev并额外 clone mmtf-cpp 头文件到include/最终测试命令pymol -ckqy testing/testing.py --run all即上文 Python 框架的入口。八、贡献路径与许可证约束DEVELOPERSPyMOL Developer Notice2006-01-28定义了三种参与方式各自的版权与许可证约束不同在主源码树上工作改进代码的版权须转让给 Schrodinger, LLC或放入公有领域且不得附加任何超出 LICENSE 的条件。方式是在每个源文件头部加入版权转让或公有领域声明文档中给出了两段标准注释模板。在 contrib/ 目录开发自包含功能可保留自己的版权但代码必须采用 Python 许可证或同等宽松许可即无限制免费使用的 BSD 风格条款文档内附完整注释模板。仓库现存的 contrib/champ/、contrib/mmtf-c/ 等正是此模式的实例。开发基于 PyMOL Python API 的独立项目可不受 PyMOL 发行版约束、自行决定许可但若希望并入官方 PyMOL 发行包须采用 PyMOL 许可证或同等宽松开源许可证明确注明 GPL 不允许。九、快速参考清单# 1. 装好系统依赖freetype/GLEW/glm/libpng/msgpack-c/mmtf-cpp 等 # 2. 指定依赖搜索路径如适用 export PREFIX_PATH$HOME/mmtf-cpp:$HOME/msgpack-c # 3a. 普通安装 pip install . # 3b. 开发者安装增量构建 C 层测试 pip install --verbose --no-build-isolation --config-settings testingTrue . # 4. 运行 $PYMOL_PATH/bin/pymol # 安装后 python -m pymol # 模块在 PYTHONPATH 时 pymol.launch() # Python 内嵌 # 5. 跑测试 pymol -ckqy testing/testing.py --run all适用前提与限制以上流程基于当前仓库主线3.1.0 开发线要求 Python ≥ 3.9、CMake ≥ 3.13、C17 编译器PYMOL_PATH/PYMOL_DATA/PYMOL_SCRIPTS仅当数据目录非默认位置时需要手工设置Qt 界面与 GLUT/Tk 回退、VTK-m 等值面、OpenVR 等均为可选项按需通过对应开关启用即可。赞分享图形学生物信息学科学计算科研【免费下载链接】pymol-open-sourceOpen-source foundation of the user-sponsored PyMOL molecular visualization system.项目地址https://gitcode.com/gh_mirrors/py/pymol-open-source点击查看免费下载相关推荐PyMOL分子可视化系统终极安装指南从零开始构建专业科研平台PyMOL分子可视化系统终极安装指南从零开始构建专业科研平台 想要快速掌握 PyMOL分子可视化系统 的完整安装方法吗本指南将为您详细解析如何在三大主流操作图形学生物信息学科学计算科研NeteaseCloudMusicGtk4 代码架构深度剖析Rust 与 GTK4 的完美结合NeteaseCloudMusicGtk4 代码架构深度剖析Rust 与 GTK4 的完美结合 NeteaseCloudMusicGtk4 是一款专为 LinCANN/asc-devkitAI Core硬件架构解析基本架构a nameZH CN_TOPIC_0000002380477945 /a 如下图所示基于Ascend C开发的算子运行在AI Core上。人工智能深度学习算子库CANNAscend上一篇飞书 Bot 突然不说话了怎么办lark-coding-agent-bridge 排查技巧与常见问题 FAQ下一篇Madeira的原生D3D12运行时 madeira_d3d12.dll 完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

手把手教你学Simulink——基于FPGA的电机模型预测控制(MPC)硬件加速仿真

手把手教你学Simulink——基于FPGA的电机模型预测控制(MPC)硬件加速仿真

目录 手把手教你学Simulink——基于FPGA的电机模型预测控制(MPC)硬件加速仿真 一、研发目标与系统架构 1.1 目标与指标 1.2 总体架构 1.3 为什么放FPGA 二、电机离散预测模型 2.1 连续dq模型 2.2 一阶前向欧拉 2.3 电压矢量映射 三、代价函数与…

2026/10/15 3:53:44 阅读更多 →
手把手教你学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真

手把手教你学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真

目录 手把手教你学Simulink——基于反电动势过零检测的直流无刷电机(BLDC)无感控制仿真 一、 引言:当“霍尔传感器”成为过去式——反电动势过零检测如何成就真正的“无感”BLDC? 二、 问题本质:反电动势过零的“物理机制”与“协同逻辑” 1. 核心物理机制 2. 协同逻辑…

2026/10/15 3:53:44 阅读更多 →
几分钟产出一份可启动的 OpenCore EFI:OpCore Simplify 替你做了哪些事

几分钟产出一份可启动的 OpenCore EFI:OpCore Simplify 替你做了哪些事

几分钟产出一份可启动的 OpenCore EFI:OpCore Simplify 替你做了哪些事 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 喂给它一份硬件报告…

2026/10/15 3:53:44 阅读更多 →

最新新闻

UDP广播实战:从原理到跨平台稳定收发的完整指南

UDP广播实战:从原理到跨平台稳定收发的完整指南

1. 项目概述:为什么一个“UDP广播demo”值得花一整天认真写透UDP广播这个概念,听起来像教科书里被翻旧了的一页纸——很多刚学网络编程的人,第一反应是:“不就是发个包,让局域网里所有机器都收到吗?”但真当…

2026/10/15 6:14:42 阅读更多 →
Spring事件机制实战:用ApplicationEventPublisher实现业务解耦

Spring事件机制实战:用ApplicationEventPublisher实现业务解耦

做后端开发的人应该都有过这种经历:一个下单接口,业务代码越堆越多。一开始只是保存订单,后面要扣库存、发短信、发优惠券、加积分、通知财务……新需求一个接一个,每次都要打开核心 Service 往里面塞代码。改到后面,下…

2026/10/15 6:14:42 阅读更多 →
Java工程师24周转型Agent工程师:从LLM基础到多Agent协作实战

Java工程师24周转型Agent工程师:从LLM基础到多Agent协作实战

1. 为什么Java老手转Agent工程师反而有优势这两年Agent Engineer这个岗位火得有点不讲道理。招聘网站上挂出来的JD,薪资区间普遍比同级别的后端开发高出30%到50%,而且很多岗位明确写着“有后端经验者优先”。我身边不少写了五六年Java的朋友都在问同一个…

2026/10/15 6:14:42 阅读更多 →
IDEA+Maven+Tomcat:从零创建JSP Web项目完整实战指南

IDEA+Maven+Tomcat:从零创建JSP Web项目完整实战指南

1. 项目概述:为什么现在还要学JSP,以及你将从这篇文章里得到什么先别急着划走。我知道很多人一看到JSP这仨字母,第一反应是"这不是上个时代的东西了吗?现在不都是前后端分离、Vue/React一把梭吗?"——这话没…

2026/10/15 6:14:42 阅读更多 →
机房UPS备用电源监控实战:电池巡检与告警配置全解析

机房UPS备用电源监控实战:电池巡检与告警配置全解析

说起来有点丢人,我们这套机房UPS备用电源监控系统,是被一次本可以避免的机房掉电事故逼出来的。那会儿机房规模不大,两台某品牌的200kVA主机做11冗余,带大约60多路机柜,负载不算重,约40%左右。当时我们对UP…

2026/10/15 6:14:42 阅读更多 →
对抗样本攻击方法全解析:从FGSM到物理世界攻击

对抗样本攻击方法全解析:从FGSM到物理世界攻击

1. 对抗样本攻击的底层逻辑与整体分类框架搞机器学习安全这块的人,迟早会碰到对抗样本这个绕不开的坎。我第一次接触这个概念是在做一个图像分类的小项目时,模型在测试集上准确率跑到98%以上,结果把一张熊猫照片加上一层肉眼几乎看不出来的噪…

2026/10/15 6:13:42 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →