在Anaconda安装及多个原有的包打包成列表进行安装下载文章中,我已经介绍了如何批量式的pip模块,但是入了Anaconda的坑,就很久没有用Pycharm了。现在因为工作需要,不得不重新启用Pycharm。
但是当我把Anaconda的环境加入Pycharm之后,无法正常运行,一直处于缓存状态,可能是因为Anaconda本身以及我后来装的模块太多,导致Pycharm缓存吃紧。
所以我们只能从添加新的Python环境,同时意味着一起的模块无法继续运行。不过没关系,反正我根据工作需求,重新pip新的模块。所以就又回到批量下载的起点。依据给定的模块文档,复制到Pycharm,然后利用上面提到的文章方法,进行pip。
新的问题是,当os.system一运行,pip的下载路径还是原来的Anaconda设定的路径,但是Pycharm环境确实修改新的python环境了。
所以我们可以先终端窗口输入pip show pip:
可以看到目前pip的路径
接下来我们就解决修改新环境的pip路径
如上图,我们将新的python环境加入系统变量,将新环境的Scripts调到靠前的位置(保证在原先环境的Scripts之前就可以)。
然后我们在终端继续输入:pip show pip
这时候pip路径已经改变,你再进行pip操作就可以保存到新环境
然后你就可以进行os.system的批量pip下载了。
补充:
alist=[]
import os
if __name__ == '__main__':
for s in alist:
os.system('pip install '+str(s) + ' -i https://pypi.tuna.tsinghua.edu.cn/simple')
另外可以加个镜像源加快下载速度
过滤失败模块,进行分析
批量下载,遇到失败的就会跳过,继续下载新的,并且会提示错误,但是批量下载模块数量庞大,按个排查,费时间。
解决办法:过滤失败列表,分析并手动下载:
代码演示
#总模块
target_list=[packages]
new_target_list=[]
for i in target_list:
new_target_list.append(i.strip())
print(new_target_list)
#成功的模块
new_succeed_list=[]
for j in succeed_list:
new_succeed_list.append(j.strip())
print(new_succeed_list)
失败的模块
error_list=[]
for k in new_target_list:
if k in new_succeed_list:
pass
else:
error_list.append(k)
print(error_list)
手动解决失败的扩展包可以借助 适用于Python扩展程序包的非官方Windows二进制文件,使用案例如解决conda报错以及借助Windows二进制文件安装扩展包