Bootstrap

Pycharm使用图形化界面安装时出现 'module' object is not callable的解决方法

@Pycharm使用图形化界面安装时出现 ‘module’ object is not callable的解决方法

使用Pycharm安装包遇到’module’ object is not callable

最近使用pycharm写Django,原来一直是python2.7的忠实使用者,当时无奈2.X版本以后不再维护,现在所有项目都要转到3.X版本。在自动化安装Django过程中一直出现’module’ object is not callable的报错,并提示PIP版本的问题,显示是packaging_tool.py文件中do_install方法报错
报错源码如下:

def do_install(pkgs):
    try:
        try:
            from pip._internal import main
        except Exception:
            from pip import main
        
    except ImportError:
        error_no_pip()
    return main(['install'] + pkgs)

我们在实际使用pip的时候一般不会关注其内部结构方法,主要使用的就是几条命令,而pip作为python最为强大的包管理器,其目前已经更新到19.3.1版本,其方法已经和原来产生很大差异,可以替换pip版本为老版本,解决问题。但治标不治本,故更新pycharm版本为新版本,发现没有报错信息,再看新版本pycharm源码:

def do_install(pkgs):
    run_pip(['install'] + pkgs)


def do_uninstall(pkgs):
    run_pip(['uninstall', '-y'] + pkgs)


def run_pip(args):
    import runpy
    sys.argv[1:] = args
    # pip.__main__ has been around since 2010 but support for executing it automatically
    # was added in runpy.run_module only in Python 2.7/3.1
    module_name = 'pip.__main__' if sys.version_info < (2, 7) else 'pip'
    try:
        runpy.run_module(module_name, run_name='__main__', alter_sys=True)
    except ImportError:
        error_no_pip()
  

从中可以看出pip执行的方法产生了很大变动。
结论:在技术领域,跟新创新真的很重要!思想一定不能逐步自封,跟住主流,引导潮流才是王道!

;