欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

解决AttributeError: 'module' object has no attribute 'main' 安装第三方包报错

发布时间:2025/4/16 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 解决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' 安装第三方包报错的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。