解决AttributeError: 'module' object has no attribute 'main' 安装第三方包报错
生活随笔
收集整理的這篇文章主要介紹了
解决AttributeError: 'module' object has no attribute 'main' 安装第三方包报错
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.找到pycharm 目錄下的 \helper\packaging_tool.py 文件 2.用新版pycharm 的packaging_tool.py 替換 舊版 同名文件 文件代碼如下: import sys import traceback import getopt import os ERROR_WRONG_USAGE = 1 ERROR_NO_PIP = 2 ERROR_NO_SETUPTOOLS = 3 ERROR_EXCEPTION = 4 os.putenv("PIP_REQUIRE_VIRTUALENV", "false") def exit(retcode): ????major, minor, micro, release, serial = sys.version_info ????version = major * 10 + minor ????if version < 25: ????????import os ????????os._exit(retcode) ????else: ????????sys.exit(retcode) def usage(): ????sys.stderr.write('Usage: packaging_tool.py <list|install|uninstall|pyvenv>\n') ????sys.stderr.flush() ????exit(ERROR_WRONG_USAGE) def error(message, retcode): ????sys.stderr.write('Error: %s\n' % message) ????sys.stderr.flush() ????exit(retcode) def error_no_pip(): ????type, value, tb = sys.exc_info() ????if tb is not None and tb.tb_next is None: ????????error("Python packaging tool 'pip' not found", ERROR_NO_PIP) ????else: ????????error(traceback.format_exc(), ERROR_EXCEPTION) def do_list(): ????try: ????????import pkg_resources ????except ImportError: ????????error("Python packaging tool 'setuptools' not found", ERROR_NO_SETUPTOOLS) ????for pkg in pkg_resources.working_set: ????????try: ????????????requirements = pkg.requires() ????????except Exception: ????????????requirements = [] ????????requires = ':'.join([str(x) for x in requirements]) ????????sys.stdout.write('\t'.join([pkg.project_name, pkg.version, pkg.location, requires])+chr(10)) ????sys.stdout.flush() def do_install(pkgs):?? ????return pip_main(['install'] + pkgs) def do_uninstall(pkgs): ????return pip_main(['uninstall', '-y'] + pkgs) def pip_main(args): ????try: ????????import pip ????except ImportError: ????????error_no_pip() ????try: ????????func = pip.main ????except AttributeError: ????????from pip._internal import main as func ????func(args) def do_pyvenv(path, system_site_packages): ????try: ????????import venv ????except ImportError: ????????error("Standard Python 'venv' module not found", ERROR_EXCEPTION) ????# In Python >= 3.4 venv.create() has a new parameter with_pip=False ????# that allows to automatically install setuptools and pip with the module ????# ensurepip. Unfortunately, we cannot use this parameter and have to ????# bootstrap these packages ourselves, since some distributions of CPython ????# on Ubuntu don't include ensurepip. ????venv.create(path, system_site_packages=system_site_packages) def do_untar(name): ????import tempfile ????directory_name = tempfile.mkdtemp("pycharm-management") ????import tarfile ????tar = tarfile.open(name) ????for item in tar: ????????tar.extract(item, directory_name) ????sys.stdout.write(directory_name+chr(10)) ????sys.stdout.flush() ????return 0 def mkdtemp_ifneeded(): ????try: ????????ind = sys.argv.index('--build-dir') ????????if not os.path.exists(sys.argv[ind + 1]): ????????????import tempfile ????????????sys.argv[ind + 1] = tempfile.mkdtemp('pycharm-packaging') ????????????return sys.argv[ind + 1] ????except: ????????pass ????return None def main(): ????try: ????????# As a workaround for #885 in setuptools, don't expose other helpers ????????# in sys.path so as not no confuse it with possible combination of ????????# namespace/ordinary packages ????????sys.path.remove(os.path.dirname(__file__)) ????except ValueError: ????????pass ????retcode = 0 ????try: ????????if len(sys.argv) < 2: ????????????usage() ????????cmd = sys.argv[1] ????????if cmd == 'list': ????????????if len(sys.argv) != 2: ????????????????usage() ????????????do_list() ????????elif cmd == 'install': ????????????if len(sys.argv) < 2: ????????????????usage() ????????????rmdir = mkdtemp_ifneeded() ????????????pkgs = sys.argv[2:] ????????????retcode = do_install(pkgs) ????????????if rmdir is not None: ????????????????import shutil ????????????????shutil.rmtree(rmdir) ????????elif cmd == 'untar': ????????????if len(sys.argv) < 2: ????????????????usage() ????????????name = sys.argv[2] ????????????retcode = do_untar(name) ????????elif cmd == 'uninstall': ????????????if len(sys.argv) < 2: ????????????????usage() ????????????pkgs = sys.argv[2:] ????????????retcode = do_uninstall(pkgs) ????????elif cmd == 'pyvenv': ????????????opts, args = getopt.getopt(sys.argv[2:], '', ['system-site-packages']) ????????????if len(args) != 1: ????????????????usage() ????????????path = args[0] ????????????system_site_packages = False ????????????for opt, arg in opts: ????????????????if opt == '--system-site-packages': ????????????????????system_site_packages = True ????????????do_pyvenv(path, system_site_packages) ????????else: ????????????usage() ????except Exception: ????????traceback.print_exc() ????????exit(ERROR_EXCEPTION) ????exit(retcode) if __name__ == '__main__': ????main() 替換掉代碼即可
轉載于:https://www.cnblogs.com/wujf-myblog/p/9620315.html
總結
以上是生活随笔為你收集整理的解决AttributeError: 'module' object has no attribute 'main' 安装第三方包报错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git 常见命令,规范 整理
- 下一篇: python 大数据学习 遇到的问题,及