基于os.system批量下载修改pip新环境路径以及过滤失败扩展包

一小步也是进步

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二进制文件安装扩展包

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容