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 查看本文章