Py学习  »  Python

Python初体验之你需要加快你的模块安装速度

生信技能树 • 10 月前 • 244 次点击  

我们前些天的推文:简单绘制一个3D效果的饼图吧,对比了R语言和Python的可视化效果,成功的吸引了不少小伙伴入坑Python编程语言,而且它确实是在单细胞数据处理领域占比有超越R的趋势,所以有必要开辟一个Python专辑啦。然后呢,开始学习一个编程语言,我们肯定是首先得安装好它,比如前面我们讲解了Python的安装,它多个版本的差异以及管理,详见:Python初体验之弄清楚版本差异和如何安装管理

通常情况下,我们拿到了Python代码后在运行它的过程中大概率上需要加载很多Python模块,但是对初学者的电脑来说,是接近于空白的,需要一个个模块自己安装。如果我们类比R语言来说,安装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的模块,那么第一个经典的报错如下所示:

经典的报错

这就是Python的初学者一定会遇到的这样的报错,说缺某个模块啦 :

   import pandas as pd
ModuleNotFoundError: No module named 'pandas'

前面我们介绍了由JetBrains公司开发的专业Python IDE(PyCharm) 来辅助我们安装Python模块啦 , 大家可以提前熟悉这个IDE的一些按键,:

这个IDE的一些按键

可以通过这个IDE来打开终端, 每个人的电脑也有很多其它开启终端的方法。在这个终端可以使用pip的install命令来安装任意成熟的Python模块,如下所示:

使用pip的install命令来

很明显的可以看到,它的网络速度非常慢。。。

因为我们绝大部分人都是在中国大陆地区,所以也是需要通过设置合理的镜像来加快你的模块安装速度!

 pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple 

基本上就是无敌的速度了:

无敌的速度

同样的,我们可以一次性安装多个Python的常见的模块,如下所示的代码:

 pip install seaborn matplotlib numpy  -i https://pypi.tuna.tsinghua.edu.cn/simple 

也可以把多个Python的模块和对应的版本写到requirements.txt文件里,用pip -r requirements.txt安装 ,这样的话整理不同的Python的模块和对应的版本需要花费时间但是它们就不容易出现版本冲突,一劳永逸。

如果对比R语言,其实它的批量安装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))
})

 


如果大家已经安装配置好了自己的Python环境,就可以把前些天的推文:简单绘制一个3D效果的饼图吧里面的Python可视化代码敲一下,如果是Python编程经验充足,也可以直接看看我们在《单细胞天地》的Python实战笔记哈:

Python图文复现2022

scanpy官方教程2022

如果你需要Python编程书籍

看了看主流的平台差不多是图灵社区整理的最齐全了,详见:年度书单盘点 | 豆瓣高分,值得反复刷的Python好书

Python编程书籍


文末友情宣传

强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶:

生信Python初体验1


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