成功在 Conda Python 2.7 环境中安装 Clipper(eCLIP peak caller)
🔬 成功在 Conda Python 2.7 环境中安装 Clipper(eCLIP peak caller)
本文记录了如何在无 root 权限下使用 Conda 环境,解决依赖、构建扩展模块并成功安装运行
clipper
的详细流程。适用于再现 eCLIP 分析流程时遇到 clipper 安装失败的情况。
🧱 环境准备
✅ 创建 Python 2.7 环境
conda create -n clipper_py27 python=2.7
conda activate clipper_py27
📦 安装依赖
✅ 安装 GCC 编译器(适用于无 root 的 Conda 环境)
conda install -c conda-forge gcc_linux-64=7 gxx_linux-64=7
✅ 安装编译依赖
conda install cython numpy pysam pybedtools
有些模块的最新版本不支持 Python 2.7,请手动指定版本:
conda install "numpy<=1.16" "pysam<=0.15.3" "pybedtools<=0.8.1" -c bioconda -c conda-forge
⏬ 下载 clipper 源码并切换到历史兼容版本
git clone https://github.com/YeoLab/clipper.git
cd clipper
git checkout 5d865bb17b2bc6787b4c382bc857119ae917ad59
这个版本兼容 Python 2.7,且没有使用过高版本的 scikit-learn
, matplotlib
, scipy
等依赖。
⚒️ 编译 Cython 和 C++ 模块
Clipper 依赖两个扩展模块:readsToWiggle
和 peaks
,需要先构建:
python setup.py build_ext --inplace
如果遇到 crypt.h: No such file or directory
错误,需安装 libxcrypt-dev
(若无 sudo 权限,可联系管理员,或在支持的 HPC 环境中使用系统模块加载)。
🛠 安装 clipper 到 Conda 环境中(避免 egg)
为避免 .egg 导入失败,使用标准方式安装:
其中setup中一些依赖包的版本应该如下:
##setup.py
install_requires = ['setuptools', 'pysam >= 0.15.3','numpy <= 1.16.6 ','scipy<=1.2.1','matplotlib<=2.2.5','pybedtools <= 0.7.10','scikit-learn <=0.20.4','HTSeq<=0.6.1'],
python setup.py install --single-version-externally-managed --record record.txt
🧩 修复扩展模块无法找到的问题
有时安装完成后运行 clipper
仍报错:
ImportError: No module named peaks
虽然 clipper/src/peaks.so
已编译成功,但 Python 可能无法找到它。解决方法如下:
✅ 手动创建模块路径并复制 .so
文件:
mkdir -p $CONDA_PREFIX/lib/python2.7/site-packages/clipper/src/
cp ./clipper/src/peaks.so $CONDA_PREFIX/lib/python2.7/site-packages/clipper/src/
确认成功导入:
python -c "import clipper.src.peaks; print(clipper.src.peaks)"
✅ 最终测试 clipper 是否可用
clipper --help
成功输出帮助信息:
usage: clipper [-h] [-b BAM_FILE] [-s STRANDEDNESS] ...
🎉 至此,Clipper 已成功在 Python 2.7 Conda 环境中安装并可正常运行!
💡 小贴士
- 避免使用
setup.py install
安装为.egg
格式,否则 Python 2.7 下容易出现ImportError
。 - 若你在服务器中没有 root 权限,建议提前准备 GCC 环境(如
gcc_linux-64
),并避免使用 pip 安装依赖。 - 建议将
clipper
安装在~/eCLIP/bin/clipper
目录中并作为模块管理。