【填坑系列】Pycharm中这个坑“困扰”过多少人?杀手锏来了...

一周精选

1 如何抉择是否要做机器学习?如何入门机器学习? 2 "爱(AI)与你同行系列"(1):从哪三个方面入手做好特征选择工程?

1棘手

更新pip之后,Pycharm安装package出现如下报错:

AttibuteError: module 'pip' has no attribute 'main'

或者

TypeError: main() takes 0 positional arguments but 1 was given

------以上都属于一类错误-------

尝试过很多种方法,可能一直都没有找到一个很好的解决措施。

有人甚至都绕过这个错误,采取将所有包都安装在python解释器安装目录下,不过,这种方式下,每次新建一个项目,都得重新建立一个继承于根目录下的所有包,这违背了venv的初衷

2 杀手锏

今天我们亮出解决方法,或许你还有更好的,不过,这个方法的确可以凑效,并且操作非常简单。

第一步,找出Pycharm的安装目录,默认安装于:

C:\Program Files\JetBrains\PyCharm Community Edition 2017.3.3\helpers

第二步,找到helpers文件夹下的文件 packaging_tool.py ,并做如下修改: 修改

1def do_install(pkgs):
2    try:
3        import pip
4    except ImportError:
5        error_no_pip()
6    return main(['install'] + pkgs)    

为:

 1def do_install(pkgs):
 2    try:
 3        #import pip
 4        try:
 5            from pip._internal import main
 6        except Exception:
 7            from pip import main
 8    except ImportError:
 9        error_no_pip()
10    return main(['install'] + pkgs)

修改

1def do_uninstall(pkgs):
2    try:
3        import pip
4    except ImportError:
5        error_no_pip()
6    return pip.main(['uninstall', '-y'] + pkgs)

为:

 1def do_uninstall(pkgs):
 2    try:
 3        #import pip
 4        try:
 5            from pip._internal import main
 6        except Exception:
 7            from pip import main
 8    except ImportError:
 9        error_no_pip()
10    return pip.main(['uninstall', '-y'] + pkgs)

接下来就是见证奇迹的时刻,终于可以在Pycharm里正常安装包或卸载包了。

3 接力

如果你有更好的解决方法,欢迎在下面留言。如果你在工程化实现中,解决了一些困扰你已久的问题,发送给我,分享给更多人。

原文发布于微信公众号 - Python与机器学习算法频道(alg-channel)

原文发表时间:2018-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

干货:论如何扩大你的Wifi范围

开篇语 出于某种不可告人的目的,在回家的前一天我来研究了一下如何增大无线网的范围的技术。大概折腾了两个小时之后,终于成功的完成了一个无线桥接的工作。暂时还没有...

1.2K11
来自专栏肖洒的博客

Web(二):Django概述

昨晚下了一晚的雨,早上研会的趣味运动会忙了一早上,下午是时候学习了。(白眼) 写在前面 之前看 learn python the hard way 推荐使用No...

982
来自专栏程序猿

tools for penetration test

渗透测试的几种工具介绍; Fiddler 代理服务应用 Fiddler 是一个免费的 Web 代理工具,具有浏览器和平台不可知性的特点。它有许多...

4037
来自专栏gaoqin31

Linux例行性工作排程 (crontab)

crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任...

973
来自专栏BIT泽清

这十个步骤让你的 App 避规ios 4.3被拒问题,亲测顺利过审

ios开发子了解到,最近有大批开发者遇到了因为审核条款 4.3(后文统一简称 4.3)被 App Store 拒绝的情况。这种情况常见于大家上传CP,金融理财类...

1K7
来自专栏嵌入式程序猿

C8051F060单片机在数字电源控制器中的应用

引言 随着科技的发展,数字控制系统的应用越来越广泛。以前的模拟电源控制系统线路复杂,控制精度低,故障率高。因此开发全数字电源控制系统越来越重要。微控制器,微处理...

3176
来自专栏北京马哥教育

记一次Linux服务器被入侵后的检测过程

? 作者 | 哈兹本德 来源 | FreeBuf ? 豌豆贴心提醒,本文阅读时间5分钟,文末有秘密! 0×00 前言 故事是这样的,大年初一,客户反应...

4215
来自专栏数据和云

五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?

DBA的悲伤,不是没有做备份,就是没有做有效的备份。日光之下,并无鲜事。 都说一个没有删过数据库的DBA,职业生涯是不完整的,不过当你删过之后,你的DBA生涯可...

4215
来自专栏Vamei实验室

用树莓派玩转蓝牙

蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过U...

7318
来自专栏自由而无用的灵魂的碎碎念

让WMP12成为万能播放器

Windows 7下的WMP12还是非常优秀的,最新卸载掉本机的KM PLAYER、XMP、暴风后,一直想使用WMP来一统本地视频播放,索性今天找到了:Wind...

1153

扫码关注云+社区

领取腾讯云代金券