1. 创建独立环境
conda create -n liftoff python=3.11
conda activate liftoff
检查:
python --version
本次实际环境:Python 3.11.16
2. 安装 pysam
由于服务器使用 conda 安装 Liftoff 时,旧版 pysam 与 libdeflate 产生依赖冲突,因此没有继续使用 conda 安装 pysam,而是使用 pip。
pip install pysam
python -c "import pysam; print(pysam.__version__)"
本次实际版本:pysam 0.24.1
3. 安装 Liftoff 主程序
不要直接:
pip install Liftoff
因为 Liftoff 1.6.3 的依赖声明非常老,会强制要求:
pysam==0.16.0.1 numpy==1.21.0 biopython==1.76 pyfaidx==0.5.8 networkx==2.4 ...
其中部分依赖与 Python 3.11 不兼容。
因此采用:
pip install Liftoff==1.6.3.2 --no-deps
4. 安装 Liftoff 运行依赖
4.1 Biopython
Liftoff 旧版本要求:
biopython==1.76
但 Biopython 1.76 无法在 Python 3.11 下正常编译,会出现:
Py_TYPE(&Trie_Type) = &PyType_Type; error: lvalue required as left operand of assignment
因此不要安装 Biopython 1.76。
安装支持 Python 3.11 的版本:
pip install biopython==1.85
检查:
python -c "import Bio; print(Bio.__version__)"
实际版本:
4.2 gffutils
安装:
pip install gffutils==0.10.1
4.3 networkx
Liftoff 1.6.3 需要:
networkx==2.4
安装:
pip install networkx==2.4
但是 networkx 2.4 使用了旧版 NumPy API,因此不能配 NumPy 2.x。
4.4 NumPy
最开始环境中是:
numpy 2.4.6
运行 networkx 2.4 时出现:
AttributeError: `np.float_` was removed in the NumPy 2.0 release.
将 NumPy 降到 1.26.4 后,又出现:
AttributeError: module 'numpy' has no attribute 'int'
因此继续降到:
numpy==1.23.5
安装:
pip install "numpy==1.23.5"
检查:
python - <<'PY' import numpy import networkx print("numpy:", numpy.__version__) print("networkx:", networkx.__version__) PY
最终:
numpy: 1.23.5 networkx: 2.4
4.5 其他 Liftoff 依赖
安装:
pip install interlap==0.2.6 parasail ujson==3.2.0
5. 最终验证
检查所有 Python 依赖:
python - <<'PY' import pysam import Bio import gffutils import networkx import interlap import parasail import ujson print("pysam:", pysam.__version__) print("Biopython:", Bio.__version__) print("gffutils:", gffutils.__version__) print("networkx:", networkx.__version__) print("interlap: OK") print("parasail:", parasail.__version__) print("ujson:", ujson.__version__) PY
成功输出:
pysam: 0.24.1 Biopython: 1.85 gffutils: 0.10.1 networkx: 2.4 interlap: OK parasail: 1.3.4 ujson: 3.2.0
检查 Liftoff:
liftoff --version
最终:v1.6.3
本次安装过程中不推荐的方法
不推荐直接使用 conda 安装 Liftoff
conda install -c bioconda liftoff
在当前服务器环境中容易遇到:
pysam libdeflate Python 3.11
之间的 solver 冲突。
不要强行安装 Biopython 1.76
pip install biopython==1.76
在 Python 3.11 下会尝试源码编译并失败。
不要强行安装 pysam 0.16.0.1
pip install pysam==0.16.0.1
这个版本太老,在当前 Python 3.11 环境中容易进入源码编译问题。
不要把 NumPy 升回 2.x
因为:
networkx 2.4 ↓ 使用 np.float_ / np.int ↓ NumPy 2.x / 新版 NumPy ↓ 报错
本次最终确定使用:
numpy 1.23.5