pip більше не працює після помилки оновлення, об'єкт 'module' не викликається


70

Після оновлення файлу pip повністю припинив роботу.

Z:\>pip install matplotlib
Traceback (most recent call last):
  File "c:\program files\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\program files\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Program Files\Python37\Scripts\pip.exe\__main__.py", line 9, in <module>
TypeError: 'module' object is not callable

Будь-яка допомога, будь ласка?

Редагувати: я працюю над Windows 10


13
Чи можете ви спробувати python -m pip install matplotlibповідомити про помилку?
хан соло

10
Створіть звичку використовуватиpython -m pip
han solo

3
Здається, проблема щодо цього 19.3 не працює після оновлення з 19.2.3
хан соло

1
@AnnevanRossum Запуск python -m pipпереконайтеся, що виклик pipзавжди асоціюється з pythonвашим запущеним
хан соло

2
@hansolo Також має бути щось інше. У мене система pipвиходить з ладу, в той час як python -m pipуспішно. Це багатопітонна система (і pip3вдається також python3 -m pip). Мені було цікаво, чи pipвикористовувались як є, він використовує інше PYTHONPATHчи робить щось інше.
Енн ван Россум

Відповіді:


81

Вся заслуга в цьому - користувачеві han_solo , який залишив відповідь як коментар, а не як відповідь:

Замість pip install stdlib_list --user

використання python -m pip install stdlib_list --user

Замінити stdlib_listз matplotlibабо незалежно від того імені пакета , який ви хочете.


20
Чому це відбувається?
darkgaze

1
Ти зробив мій день :)
Врушабх Сучак

1
гидота. але принаймні ви можете встановити псевдонім alias pip="python -m pip"(або alias pip="python3 -m pip"). додайте це до ~ / .bash_aliases або ваш файл оболонки rc
fbas

використовувати python3 -m pip install stdlib_list --userдля python3. Ім'я модуля все ще є pipдля цього випадку.
smcg

1
Ви знаєте, як виконувати вище команду в python-коді
Mamen

14

У мене була така ж проблема, як у вас, і я вирішив її, видаливши pip та встановивши знову.

Для видалення: python -m pip uninstall pip

Щоб встановити, дотримуйтесь інструкцій: https://www.liquidweb.com/kb/install-pip-windows/

Після цього у вас буде старіша, але функціональна версія 19.0.3.


6

Якщо ви не бажаєте використовувати команду long щоразу python -m pip install <package>, перевстановіть pip у старішу версію, де цієї помилки не було.

python -m pip install pip==19.0.3

Тепер ви зможете користуватися pip install matplotlibабо pip listнормально.

І щоразу, коли помилка вирішена, оновіть pip, як ви робили раніше.


4

Це працювало для мене, видаліть pip 19.3.1 і замініть на 19.0.3, помилка зникла.

python -m pip install pip==19.0.3 --user

2

Майте звичку встановлювати будь-які пакети python з pip за допомогою python -m , скажімо, для установки numpy use нижче команди:

python -m pip встановити numpy

У випадку, якщо він помиляється з дозволом оточення, додайте --user в тій же команді:

пітон -m піп встановити NumPy --user


1

Схоже на те, що сказав @han_solo, але якщо ваш запущений python3, замість того, щоб використовувати:

python -m pip install stdlib_list --user

спробуйте використовувати:

python3 -m pip install stdlib_list --user


3
Олден, швидше наступного разу просто відредагуйте існуючу відповідь і додайте python3 -m pip install stdlib_list --userзамість того, щоб мати зовсім нову відповідь, просто щоб додати номер
Філіп Джейкобс

0

У мене була така ж проблема з h5py-2.7.1, і попередження після оновлення до h5py-2.10.0 не було.


0

Я поки не можу залишати коментарі, тому вирішив залишити посилання з поясненням, чому це може статися: https://github.com/pypa/pip/isissue/5599

У такому випадку ви можете спробувати виправити це, зменшивши версію pip за допомогою наступної команди:

 python -m pip install pip==<previous version>

-1

Була така ж проблема. Мені вдалося виправити це, встановивши pip на місце, використовуючи комбінацію інших відповідей:

python -m pip install -U --force-reinstall pip

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.