天天看點

AttributeError: 'module' object has no attribute 'main'報錯原因解決

pycharm 安裝  flask  時候報錯

pycharm版本:2017.2.3
python版本:2.7
pip版本:10.0.1      

報錯

AttributeError: 'module' object has no attribute 'main'報錯原因解決
Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/packaging_tool.py", line 192, in main
    retcode = do_install(pkgs)
  File "/Applications/PyCharm.app/Contents/helpers/packaging_tool.py", line 109, in do_install
    return pip.main(['install'] + pkgs)
AttributeError: 'module' object has no attribute 'main'      

原因

新版pip中的main函數已經發生了變化,是pycharm的原因

參考:

PyCharm 2017.3 在pip10.0.0版本中報錯(module ‘pip’ has no attribute ‘main’)

解決

方式一

通過 pip 指令手動安裝      

方式二

根據報錯提示中的路徑

"/Applications/PyCharm.app/Contents/helpers/packaging_tool.py"      

打開檔案,如果在mac中找不到檔案,可以使用打開

$ vim "/Applications/PyCharm.app/Contents/helpers/packaging_tool.py"      

打開後找到如下代碼

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


def do_uninstall(pkgs):
    try:
        import pip
    except ImportError:
        error_no_pip()
    return pip.main(['uninstall', '-y'] + pkgs)      

先注釋,添加如下代碼:

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)


def do_uninstall(pkgs):
    try:
        try:
            from pip._internal import main
        except Exception:
            from pip import main
    except ImportError:
        error_no_pip()
    return main(['uninstall', '-y'] + pkgs)      

問題成功解決