OSError: [Errno 9] Неверный дескриптор файла при использовании команды pip в Python

Вопрос или проблема

При попытке обновить pip или установить новые пакеты с помощью pip в командной строке появляется следующая ошибка. Я удалил и переустановил Python, но проблема все еще существует. Моя текущая версия Python — 3.7.3, я запускаю ее на платформе Windows 10. Это сообщение об ошибке:

OSError: [Errno 9] Неверный дескриптор файла

Как это исправить? И что вызывает эту ошибку.

Сообщение об ошибке:

C:\Users\ELCOT>python -m pip install -upgrade pip
Traceback (most recent call last):
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\ELCOT\AppData\Local\Programs\Python\Python37-32\Scripts\pip.exe\__main__.py", line 5, in <module>
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\main_parser.py", line 12, in <module>
    from pip._internal.commands import (
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\commands\__init__.py", line 6, in <module>
    from pip._internal.commands.completion import CompletionCommand
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\commands\completion.py", line 6, in <module>
    from pip._internal.cli.base_command import Command
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\base_command.py", line 20, in <module>
    from pip._internal.download import PipSession
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\download.py", line 15, in <module>
    from pip._vendor import requests, six, urllib3
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\__init__.py", line 114, in <module>
    from . import utils
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\utils.py", line 26, in <module>
    from ._internal_utils import to_native_string
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\_internal_utils.py", line 11, in <module>
    from .compat import is_py2, builtin_str, str
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\compat.py", line 64, in <module>
    from http.cookies import Morsel
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 724, in exec_module
  File "<frozen importlib._bootstrap_external>", line 859, in get_code
  File "<frozen importlib._bootstrap_external>", line 917, in get_data
  OSError: [Errno 9] Неверный дескриптор файла

C:\Users\ELCOT>pip install numpy
Traceback (most recent call last):
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\ELCOT\AppData\Local\Programs\Python\Python37-32\Scripts\pip.exe\__main__.py", line 5, in <module>
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\main_parser.py", line 12, in <module>
    from pip._internal.commands import (
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\commands\__init__.py", line 6, in <module>
    from pip._internal.commands.completion import CompletionCommand
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\commands\completion.py", line 6, in <module>
    from pip._internal.cli.base_command import Command
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\cli\base_command.py", line 20, in <module>
    from pip._internal.download import PipSession
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_internal\download.py", line 15, in <module>
    from pip._vendor import requests, six, urllib3
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\__init__.py", line 114, in <module>
    from . import utils
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\utils.py", line 26, in <module>
    from ._internal_utils import to_native_string
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\_internal_utils.py", line 11, in <module>
    from .compat import is_py2, builtin_str, str
  File "c:\users\elcot\appdata\local\programs\python\python37-32\lib\site-packages\pip\_vendor\requests\compat.py", line 64, in <module>
    from http.cookies import Morsel
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 724, in exec_module
  File "<frozen importlib._bootstrap_external>", line 859, in get_code
  File "<frozen importlib._bootstrap_external>", line 917, in get_data
  OSError: [Errno 9] Неверный дескриптор файла

Я думаю, что в последнее время (за последние 3 года или около того) Windows обновил некоторые настройки безопасности, возможно, чтобы бороться с программами-вымогателями, поэтому программа, которую мы пишем, например, программа на Python, может только читать/записывать файлы внутри папки C:\Users\xxxxx\Documents.

Раньше я создавал специальную рабочую папку C:\working и делал все кодирования для удовольствия, теперь программа больше не работает из-за этого обновления безопасности. Если переместить ту же самую программу в C:\Users\xxxxx\Documents, она будет работать как всегда.

Ответ или решение

Когда вы сталкиваетесь с ошибкой OSError: [Errno 9] Bad file descriptor при работе с pip в среде Python на Windows 10, это может быть признаком различных проблем, связанных с доступом к файловой системе. Ваша проблема возникает в контексте использования командной строки для установки или обновления пакетов, и, как вы упомянули, это может быть связано с последними обновлениями системы, касающимися безопасности.

Причины возникновения ошибки

  1. Безопасность и разрешения: Последние обновления Windows могут действительно накладывать ограничения на доступ к определенным каталогам, особенно если они не находятся в вашей папке пользователя (например, C:\Users\xxxxx\Documents). Это изменение может привести к тому, что Python или pip пытается получить доступ к файлам в запрещённых директориях, что и приводит к ошибке "Bad file descriptor".

  2. Проблемы с окружением: Если вы используете виртуальные окружения (venv или conda), убедитесь, что вы активировали нужное окружение перед запуском pip. Неправильная настройка окружения может привести к ошибкам доступа к файлам.

  3. Несоответствие версий: Если версии pip и Python несовместимы или установлены в неправильных директориях, это также может вызвать подобные ошибки. Обновление pip до самой последней версии обычно является хорошей практикой.

  4. Конфликт с другими установленными библиотеками: Иногда библиотеки, которые вы установили в систему, могут конфликтовать друг с другом, что также может вызвать сбои.

Решения

1. Переход в корректную директорию

Попробуйте работать непосредственно из папки, которая имеет нужные права доступа, например, C:\Users\xxxxx\Documents. Измените текущую директорию в командной строке с помощью команды cd:

cd C:\Users\xxxxx\Documents

2. Проверка и запуск pip

После перехода в нужную папку попробуйте снова выполнить команду pip для установки или обновления:

python -m pip install --upgrade pip

Если вы используете виртуальное окружение, обязательно активируйте его:

C:\path\to\your\venv\Scripts\activate

3. Обновление Python и pip

Убедитесь, что у вас установлены последние версии Python и pip. Иногда обновления устраняют известные проблемы. Вы можете проверить текущую версию pip с помощью следующей команды:

pip --version

Затем обновите его:

python -m pip install --upgrade pip

4. Проверка переменных среды

Убедитесь, что в переменных окружения PATH правильно указаны пути к директориям Python и Scripts. Ошибки здесь могут также привести к сбоям.

5. Переустановка pip

Если ни одно из предыдущих решений не помогло, попробуйте переустановить pip:

  1. Скачайте get-pip.py с официального сайта.
  2. Запустите скрипт с помощью Python:
python get-pip.py

Заключение

Ошибка OSError: [Errno 9] Bad file descriptor может быть непростой для диагностики, и решение требует комплексного подхода. Если все вышеизложенные шаги не привели к успеху, возможно, стоит обратиться за помощью к технической поддержке Python или изучить документацию по pip более подробно.

Надеемся, что эти рекомендации помогут вам устранить проблему и продолжить эффективную работу с Python и pip.

Оцените материал
Добавить комментарий

Капча загружается...