Я потратил около 6 часов на эту проблему сейчас, и я становлюсь все дальше и дальше. Вот что случилось.
Я использую компьютер с Linux, на котором установлены Python 2.7 и Python 3.5, и у меня нет прав администратора. Я использовал Python 3.5, и я хотел использовать пакет seaborn, и я обнаружил, что особая функция маркировки, которую я хотел, была доступна только в более новой версии. Так что нет проблем "pip3 install seaborn --upgrade".
Все происходило так быстро, но что-то пошло не так, и по предложению Интернета я закончил модернизацию нескольких других пакетов, таких как matplotlib, setuptools, и в конечном итоге сам pip.
Вот где это действительно пошло не так. Пип только что сломался. Это происходит, когда я запускаю pip3 --version:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 33, in vendored
__import__(vendored_name, globals(), locals(), level=0)
ImportError: No module named 'pip._vendor.pkg_resources'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
File "/usr/lib/python3/dist-packages/pip/__init__.py", line 13, in <module>
from pip.exceptions import InstallationError, CommandError, PipError
File "/usr/lib/python3/dist-packages/pip/exceptions.py", line 6, in <module>
from pip._vendor.six import iteritems
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 75, in <module>
vendored("pkg_resources")
File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", line 36, in vendored
__import__(modulename, globals(), locals(), level=0)
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
File "<frozen importlib._bootstrap>", line 634, in _load_backward_compatible
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2927, in <module>
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2913, in _call_aside
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2952, in _initialize_master_working_set
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 956, in subscribe
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2952, in <lambda>
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2515, in activate
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2097, in declare_namespace
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2047, in _handle_ns
File "/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py", line 2066, in _rebuild_mod_path
AttributeError: '_NamespacePath' object has no attribute 'sort'
Первая строка в стеке вызовов - это "из pip import main", поэтому я попытался запустить pip --version вместо pip3, и теперь я получаю:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
Эта ошибка встречается по всему Интернету как ошибка в самом pip, но все решения включают в себя то, на что у меня нет разрешения. Я попытался удалить и переустановить старую версию pip с помощью «python -m pip ...», но это не помогло с ошибкой pip3, которая вызвала ту же ошибку несколькими строками позже. И я не могу использовать этот ярлык с pip3 (python3 -m pip ...), потому что эта ошибка все равно возникает.
Хуже всего то, что моя оригинальная программа теперь полностью мертва. Я даже не могу импортировать морского рожка без сбоев.
Traceback (most recent call last):
File "/u/hailey/.local/lib/python3.5/site-packages/matplotlib/__init__.py", line 861, in __setitem__
cval = self.validate[key](val)
KeyError: 'axes.color_cycle'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "nn.py", line 9, in <module>
import seaborn as sns
File "/usr/lib/python3/dist-packages/seaborn/__init__.py", line 13, in <module>
set()
File "/usr/lib/python3/dist-packages/seaborn/rcmod.py", line 98, in set
set_palette(palette, color_codes=color_codes)
File "/usr/lib/python3/dist-packages/seaborn/rcmod.py", line 491, in set_palette
mpl.rcParams["axes.color_cycle"] = list(colors)
File "/u/hailey/.local/lib/python3.5/site-packages/matplotlib/__init__.py", line 868, in __setitem__
'list of valid parameters.' % (key,))
KeyError: 'axes.color_cycle is not a valid rc parameter. See rcParams.keys() for a list of valid parameters.'
В этот момент я решил, что все будет проще, если я просто скачаю собственную чистую версию Python в локальный каталог, где у меня есть права. Поэтому я скачал и установил новую версию Python 3.6 в локальном каталоге. Затем я запустил свою оригинальную программу с этим, и мне сказали, что у меня нет модуля с именем numpy. Умеренная. Давайте попробуем установить numpy.
Obtaining file:///u/hailey/python36/Python-3.6.0
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/u/hailey/python36/Python-3.6.0/setup.py", line 4, in <module>
import sys, os, importlib.machinery, re, optparse
ImportError: No module named machinery
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /u/hailey/python36/Python-3.6.0/
Теперь меня ведут на страницу, которая рекомендует запустить «setup.py install», что звучит достаточно просто. Но нет.
bash: /u/hailey/python36/Python-3.6.0/setup.py: Permission denied
Теперь я сдаюсь, потому что, очевидно, я ничего не знаю о Python. Я был бы очень признателен за помощь в этом. На этом этапе, даже просто восстановить то состояние, которое у меня было вчера, было бы хорошо, так как я могу жить без дополнительной метки на моем графике морского происхождения. Спасибо всем!