TypeError: ‘module‘ object is not callable

 pip 命令 出现错误:

[root@krsddpromet2 ~]# pip list
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 10, in <module>
    sys.exit(main())
TypeError: 'module' object is not callable

[root@krsddpromet2 ~]# pip3 list
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 10, in <module>
    sys.exit(main())
TypeError: 'module' object is not callable

查看执行程序pip和pip3 

[root@krsddpromet2 ~]# cat /usr/local/bin/pip
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
[root@krsddpromet2 ~]# cat /usr/local/bin/pip3
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

发现import的是一个py脚本

[root@krsddpromet2 ~]# /usr/local/bin/python3.7
Python 3.7.3rc1 (default, May 29 2019, 13:33:11)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> from pip._internal import main
>>> print(main.__file__)
/usr/local/lib/python3.7/site-packages/pip/_internal/main.py
>>>

 查看脚本,里面有main 函数:

[root@krsddpromet2 ~]# cat /usr/local/lib/python3.7/site-packages/pip/_internal/main.py
"""Primary application entrypoint.
"""
# The following comment should be removed at some point in the future.
# mypy: disallow-untyped-defs=False

from __future__ import absolute_import

import locale
import logging
import os
import sys

from pip._internal.cli.autocompletion import autocomplete
from pip._internal.cli.main_parser import parse_command
from pip._internal.commands import create_command
from pip._internal.exceptions import PipError
from pip._internal.utils import deprecation

logger = logging.getLogger(__name__)


def main(args=None):
    if args is None:
        args = sys.argv[1:]

    # Configure our deprecation warnings to be sent through loggers
    deprecation.install_warning_logger()

    autocomplete()

    try:
        cmd_name, cmd_args = parse_command(args)
    except PipError as exc:
        sys.stderr.write("ERROR: %s" % exc)
        sys.stderr.write(os.linesep)
        sys.exit(1)

    # Needed for locale.getpreferredencoding(False) to work
    # in pip._internal.utils.encoding.auto_decode
    try:
        locale.setlocale(locale.LC_ALL, '')
    except locale.Error as e:
        # setlocale can apparently crash if locale are uninitialized
        logger.debug("Ignoring error %s when setting locale", e)
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))

    return command.main(cmd_args)

所以需要改执行程序pip和pip3 脚本里面import, 使import的是函数而非模块

from pip._internal.main import main 

[root@krsddpromet2 ~]# cat /usr/local/bin/pip
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
[root@krsddpromet2 ~]# cat /usr/local/bin/pip
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())




[root@krsddpromet2 ~]# cat /usr/local/bin/pip3
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*-
import re
import sys

from pip._internal.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

扫描二维码关注公众号,回复: 13502420 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_39833509/article/details/121615463