官方给出的代码很简单,就是 git clone 然后 pip install,但我实际安装时发生各种各样报错,总结了一下,可能是三个原因造成的:1.由于是新开发的软件,可能在软件安装方面不完善;2. 服务器太老,环境配置以及某些库(例如 gcc)存在问题;3. 安装依赖包反复调用 git clone,众所周知 git clone 用起来不是一般的慢。
遇到的主要 bug 和解决办法如下:
安装MACS2报错install_requires must be a string和etuptools.installer and fetch_build_eggs are deprecated
pip install annoy 报错 error: command ‘gcc‘ failed with exit status 1
git clone下载慢或无法访问
某些参考资源如下:在安装过程中需要灵活利用这四种安装方式
python package 的四种安装方式
python package 的四种安装方式
解决了一系列 bug 之后,我总结了一下安装流程,某些特别难以安装的 python 包或需要大量依赖包的 python package 也可以参考该流程
总的思路是:
1. 创建虚拟环境,修改环境变量,克隆 scenicplus;
2. 拆分 requirements.txt 为三部分,分别安装;
3. 需要 git clone 方式安装的软件加上 https://ghproxy.com/ 代理网址之后单独安装;
4. 发生报错的依赖包进行单独安装;
5. 确定成功安装所有的依赖包,requirements.txt 文件中删除需要 git clone 的package,包含:
pycisTopic,pycistarget,pySCENIC,LoomXpy。以及其他报错的 package
具体流程
一、创建虚拟环境,版本 python=3.8,并克隆 scenicplus
.bash_profile),将默认的 python版本指向 python3.8
conda create -n scenic python=3.8
conda activate scenic
# https://ghproxy.com/ 代理网址,克隆的速度比较快
git clone https://ghproxy.com/https://github.com/aertslab/scenicplus
cd scenicplus
二、两个重要文件
requirements.txt 个人认为是影响安装成败最重要的文件,包含依赖包的信息,通过修改该文件的内容可以绕过比较难以安装的依赖包。需要注意,并不是所有需要从 github 克隆的 package 都有这个文件;
setup.py 用来配置系统,没有十足的把握里边的东西不能瞎改
pandas
numpy
tqdm
ray
attr
typing
matplotlib
scikit-learn
statistics
pyranges
scipy
pybiomart
requests
arboreto
gseapy==0.10.8
networkx
ctxcore
seaborn
pyBigWig
plotly
adjustText
MACS2
lxml
tspex
plotly
kaleido
pyvis
pygam
scanpy~=1.9
cython
plotnine
mudata
git+https://github.com/aertslab/pycisTopic@master#egg=pycisTopic
git+https://github.com/aertslab/pycistarget@master#egg=pycistarget
git+https://github.com/aertslab/pySCENIC@master#egg=pyscenic
git+https://github.com/aertslab/LoomXpy@main#egg=loomxpy
sphinx_rtd_theme
nbsphinx
nbsphinx_link
numpydoc
sphinx_book_theme
三、拆分 requirements.txt
在刚创建的虚拟环境中,依赖包和依赖包的依赖包需要一个一个被安装,一旦某个包发生报错,需要从头再来,因此先将 requirements.txt 拆分为三个文件,分别命名为 requirements-1.txt, requirements-2.txt 和 requirements-3.txt,如下:
# requirements-1.txt
pandas
numpy
tqdm
ray
attr
typing
matplotlib
scikit-learn
statistics
pyranges
scipy
pybiomart
requests
arboreto
gseapy==0.10.8
networkx
ctxcore
seaborn
pyBigWig
plotly
adjustText
# requirements-2.txt
MACS2
lxml
tspex
plotly
kaleido
pyvis
pygam
scanpy~=1.9
cython
plotnine
mudata
sphinx_rtd_theme
nbsphinx
nbsphinx_link
numpydoc
sphinx_book_theme
# requirements-3.t
git+https://github.com/aertslab/pycisTopic@master#egg=pycisTopic
git+https://github.com/aertslab/pycistarget@master#egg=pycistarget
git+https://github.com/aertslab/pySCENIC@master#egg=pyscenic
git+https://github.com/aertslab/LoomXpy@main#egg=loomxpy
四、单独安装普通依赖包
scenicplus 文件夹下
pip install -r requirements-1.txt
pip install -r requirements-2.txt
当然在这个安装过程中肯定会遇到某些报错的 package,不要慌,手动安装这些报错的 package,其他没有报错的 package 会被正常安装到 python3.8 中。我遇到报错的 package 主要是 MACS2 和 annoy,解决方法如下
安装MACS2报错install_requires must be a string和etuptools.installer and fetch_build_eggs are deprecated
pip install annoy 报错 error: command ‘gcc‘ failed with exit status 1
重复运行上边的代码,直到所有的 package 成功安装。
PS:有些包可能安装方式比较特殊或者环境变量的问题,虽然已经明确成功安装上了,pip show packagename 也可正常显示,但运行上边命令的时候就是发生报错。这是因为 pip install -r 仅是傻瓜式的检查该包是不是通过 pip install packagename 命令安装上的(个人理解,可能有偏差),一旦没有识别,就会再次按照默认方法安装,然后报错。这时可以在 requirements-1.txt 或 requirements-2.txt 中删除对应的 package。
比如我就删除了 MACS2
五、攻克堡垒:pycisTopic,pycistarget,pySCENIC 和 LoomXp
scenicplus 是在这四个包的基础上构建的,但这四个包是无法通过 pip install packagename 方式直接安装的,需要先克隆到本地,然后手动一个一个安装。
通过测试,建议的安装顺序为:pycistraget,pySCENIC,LoomXp,pycisTopic。最难安装的是 pycisTopic。
cd ../ # 返回上级目录
# 克隆时候要加代理网站
# pycistraget
git clone https://ghproxy.com/https://github.com/aertslab/pycistarget
cd pycisTopic
pip install .
# pySCENIC
cd ..
git clone https://ghproxy.com/https://github.com/aertslab/pySCENIC
cd pySCENIC
pip install .
# LoomXpy
cd ..
git clone https://ghproxy.com/https://github.com/aertslab/LoomXpy
cd LoomXpy
pip install .
# pycisTopic
cd ..
git clone https://ghproxy.com/https://github.com/aertslab/pycisTopic
cd pycisTopic
pip install .
# pycisTopic 各种报错
六、堡垒中的堡垒:pycisTopic
其报错原因和直接安装 scenicplus 报错原因是一样的,都是因为需要安装大量的依赖包,有些依赖包是可以通过 pip install packagename 直接安装的,而有些包又是需要 github 克隆到本地进行安装,而 git clone 命令下载速度实在是令人抓狂。
因此按照上边的思路安装 pycisTopic
1. 拆分 requirements.txt 为三部分,分别安装;
2. 需要 git clone 方式安装的软件加上 https://ghproxy.com/ 代理网址之后单独安装;
3. 发生报错的依赖包进行单独安装;
4. 如果明确安装的 package 发生报错,在 requirements.txt 文件中删除。
git clone https://ghproxy.com/https://github.com/aertslab/pycisTopic
cd pycisTopic
pip install -r requirements-1.txt
pip install -r requirements-2.txt
pip install . # 安装 pycisTopic
七、正式安装 scenicplus
已经明确所有的依赖包都成功安装,运行
cd scenicplus
pip install .
# 神奇的事情发生了,已经明确安装上的 pycisTopic,pycistarget,pySCENIC 和 LoomXp 竟然再次重新安装
# 然后不出意外地发生了意外
# 主要原因1. git clone 速度过慢;2. 没有识别通过 conda install 安装的 MACS2
# 在 requirements.txt 文件中删除 MACS2,pycisTopic,pycistarget,pySCENIC 和 LoomXp
# 内容如下
pandas
numpy
tqdm
ray
attr
typing
matplotlib
scikit-learn
statistics
pyranges
scipy
pybiomart
requests
arboreto
gseapy==0.10.8
networkx
ctxcore
seaborn
pyBigWig
plotly
adjustText
lxml
tspex
plotly
kaleido
pyvis
pygam
scanpy~=1.9
cython
plotnine
mudata
sphinx_rtd_theme
nbsphinx
nbsphinx_link
numpydoc
sphinx_book_theme
pip install . # 成功安装
pip show scenicplus
# 命令日志
Name: scenicplus
Version: 0.1.dev466+g37cf1fc.d20230323
Summary: SCENIC+ is a python package to build gene regulatory networks (GRNs) using combined or seperate single-cell gene expression (scRNA-seq) and single-cell chromatin accessbility (scATAC-seq) data.
Home-page: https://github.com/aertslab/scenicplus
Author: Seppe de Winter & Carmen Bravo
Author-email: seppe.dewinter@kuleuven.be & carmen.bravogonzalezblas@kuleuven.be
License: UNKNOWN
Location: /home/hanjiangang/anaconda3/envs/scenic/lib/python3.8/site-packages
Requires: adjustText, arboreto, attr, ctxcore, cython, gseapy, kaleido, lxml, matplotlib, mudata, nbsphinx, nbsphinx-link, networkx, numpy, numpydoc, pandas, plotly, plotnine, pyBigWig, pybiomart, pygam, pyranges, pyvis, ray, requests, scanpy, scikit-learn, scipy, seaborn, sphinx-book-theme, sphinx-rtd-theme, statistics, tqdm, tspex, typing
Required-by:
# python 导入
python
import scenicplus # 无报错
八、步骤五六七替补步骤
发现一种可能绕过步骤五六七的方法,在安装好除 pycisTopic,pycistarget,pySCENIC 和 LoomXp 四个软件包之外的所有依赖包,可以将 requirements-3.txt 中添加代理网站,如下:
# requirement-3.txt
git clone https://ghproxy.com/https://github.com/aertslab/pycisTopic
git clone https://ghproxy.com/https://github.com/aertslab/pycistarget
git clone https://ghproxy.com/https://github.com/aertslab/pySCENIC
git clone https://ghproxy.com/https://github.com/aertslab/LoomXpy
pip install -r requirement-3.txt
取决于是否能够连上 github,运气好的话不会报错,然后 pip install . 安装 scenicplus。运气不好的话那就只能踏踏实实按照五六七一步步安装依赖包。