Py学习  »  Python

如何批量安装几千个Python模块呢

生信技能树 • 2 年前 • 358 次点击  

安装R包非常简洁,如下所示的规律代码安装任意包:

# https://bioconductor.org/packages/release/bioc/html/GEOquery.html
if (!requireNamespace("BiocManager", quietly = TRUE))
 install.packages("BiocManager")
BiocManager::install("KEGG.db",ask = F,update = F)
BiocManager::install(c("GSEABase","GSVA","clusterProfiler" ),ask = F,update = F)
BiocManager::install(c("GEOquery","limma","impute" ),ask = F,update = F)
BiocManager::install(c("org.Hs.eg.db","hgu133plus2.db" ),ask = F,update = F)

实际上,大家即使是没有学习过R包安装,也可以看得懂,变化R包名字,就可以一行行运行代码来安装指定的包了!当然了,这样的简单其实仅仅是因为 “难者不会,会者不难”。一个擅长R语言的小伙伴去使用Python,如果也想如此安装Python的模块,就会很麻烦了。比如遇到了一个Python模块,需要自行下载其代码,然后手动安装它,它本身的安装很简单:

wget http://www.bmkmanu.com/wp-content/uploads/2022/08/BSCMatrix_v1.6.tar.gz 
tar zxvf BSCMatrix_v1.6.tar.gz
cd BSCMatrix_v1.6/cellcalling 
python setup.py build_ext -i  
# 需要前面的 scipy,plotly,lz4,numpy,Cython 系列Python模块

但是如果要使用它,就很麻烦,因为它大量依赖于各种模块 :

# 大量的Python模块 ,主要是应对百迈克官网软件 BSCMatrix_v1.6.tar.gz  里面的cellcalling 小工具。
pip install plotly -i https://mirrors.aliyun.com/pypi/simple/
pip install lz4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install h5py -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
 

会遇到 无穷无尽的模块缺失的报错信息,比如:ModuleNotFoundError: No module named 'tables'

这个Python模块需要的是 41个模块:

AnyStr
BarcodeFilterResults
call
cellranger
collections
copy
csv
ctypes
enum
errno
gzip
h5py
ing
interpolate
itertools
json
loggamma
logging
lz4
maketrans
martian
math
namedtuple
normalize
numexpr
numpy
OrderedDict
os
pandas
pathlib
random
scipy
shutil
SIGKILL
six
subprocess
sys
tables
tenkit
unescape
xrange

如何批量安装这些模块呢?

加入是R语言,我们很容易批量安装。这个技巧我在移植一些shiny应用程序就用到过:

list.of.packages "shiny",
                      "tidyr",
                      'tidyverse'
                      "clusterProfiler",
                      "DT",
                      "ashr",
                      "enrichplot",
                      "plotly")
# 这个 list.of.packages 变量,可以是读取一个含有无数个包的名字的文本文件。
all_packages = rownames(installed.packages())
save(all_packages,file = 'all_packages.Rdata')

#checking missing packages from list
new.packages in% installed.packages()[,"Package"])]
new.packages 
packToInst packToInst
if(T){
  lapply(packToInst, function(x){
    BiocManager::install(x,ask = F,update = F)
  })
}
lapply(intersect(packagesReq, installed.packages()),function(x){
  suppressPackageStartupMessages(library(x,character.only = T))
})

感谢各路高人帮助,安装代码可以直接发邮件给我,到jmzeng1314@163.com

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/146735
 
358 次点击