Другие объяснили, что NoneType
есть и общий способ закончить с ним (т. е. не вернуть значение из функции).
Еще одна распространенная причина, по которой вы None
, где вы не ожидайте, что это назначение операции на месте изменяемого объекта. Например:
mylist = mylist.sort()
Метод sort()
списка сортирует список на месте, т. Е. mylist
изменен. Но фактическое возвращаемое значение метода - None
, а не отсортированный список. Поэтому вы назначили None
на mylist
. Если вы попытаетесь сделать следующее, скажем, mylist.append(1)
, Python даст вам эту ошибку.
Для меня работал только апгрейд:
pip install --upgrade pip
У меня также был этот вопрос. Первоначально был установлен прокси-сервер и работал нормально. Затем я подключился к сети, где она не проходит через прокси. После сброса прокси-сервера снова получите работу.
unset http_proxy; unset http_prox; unset HTTP_PROXY; unset HTTPS_PROXY
Если вы находитесь за прокси-сервером, перед началом установки вы должны выполнить дополнительные шаги по настройке. Вы должны установить переменную окружения http_proxy на адрес прокси-сервера. Используя bash, это выполняется с помощью команды
export http_proxy="http://user:pass@my.site:port/"
. Вы также можете указать параметр
--proxy=[user:pass@]url:port
в pip. Часть [user:pass@]
не является обязательной.
порт 443 не открыт, просто разрешите пользовательский порт tcp 443, если на AWS еще открыть порт 443 для исходящих соединений ...
Необычно, если я удалю прокси из среды и добавлю его в командную строку, он работает для меня. Например, чтобы самому обновить pip
:
env http_proxy= https_proxy= pip install pip --upgrade --proxy 'http://proxy-url:80'
В моей проблеме был прокси-сервер в среде. Кажется, что пип только отличит аргумент.
Решение: 1. sudo apt remove python-pip
2. pip3 install pip
(или установите pip с помощью get-pip.py )
Почему: Эта ошибка произошла в pip 8.0.1 который установлен apt-get. И произошло, только когда ваша сеть нестабильна.
Если у вас есть pip, установленный с apt, он скрывает пип, который вы установили другими способами, поэтому сначала вы должны удалить apt one.
Я отключил сеть и протестировал 8.0.1, 9.0.3, 10.x 3 версии, установленные с pip3 или get-pip.py, при этом не было ошибок. & nbsp; & nbsp; Итак, я думаю, что только apt версия pip 8.0.1 имеет эту ошибку, другие - в порядке.
Что происходит здесь, так это то, что продаваемые версии запроса / urllib3 сталкиваются при импорте в двух разных местах (один и тот же код, но разные имена). Если у вас есть сетевая ошибка, она не будет пытаться получить колесо, но с ошибкой выше. См. здесь для более глубокого погружения в эту ошибку.
Для решения с системой pip см. выше .
Если вы есть эта проблема в virtualenv, созданная с помощью python -m venv
(которая все еще копирует колеса с /usr/share/python-wheels
, даже если у вас есть пипс отдельно), самый простой способ «исправить» выглядит следующим образом:
/usr/bin/python3.6 -m venv ...
requests
в среду (это может вызвать ошибку выше): <venv>/bin/pip install requests
requests
, который будет использоваться pip: rm <venv>/share/python-wheels/{requests,chardet,urllib3}-*.whl
Теперь в <venv>/bin/pip
используется установленная версия requests
, которая имеет urllib3 vendored.
/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl
, и теперь он исправлен (без virtualenv).
– krsoni
29 October 2017 в 13:59
/usr/share/python-wheels
, python -m venv
больше не будет использоваться для использования <venv>/bin/pip
. Поэтому, если вы удалите эти файлы, вы должны быть уверены, что вам это не нужно. Если вам нужен как системный пипс, так и узел venv, вам необходимо установить систему с помощью get-pip.py
(см. stackoverflow.com/a/37531821/1380673 ), и вам нужно удалить whl файлы в каждом venv.
– Jan Katins
6 November 2017 в 10:47
Это рабочее решение этой проблемы, которое я нашел.
sudo apt-get clean
cd /var/lib/apt
sudo mv lists lists.old
sudo mkdir -p lists/partial
sudo apt-get clean
sudo apt-get update
Я получал эту ошибку для любой установки пакета, используя pip
. Позже я обнаружил, что pip требует, чтобы переменная http_proxy
и https_proxy
запускалась за прокси. После установки этих двух переменных среды эта проблема исправлена.
export http_proxy=http://<username>:<passowrd>@<proxy_ip>:<proxy_port>/
export https_proxy=https://<username>:<passowrd>@<proxy_ip>:<proxy_port>/
Ubuntu поставляется с версией PIP от precambrian, и именно так вам нужно обновить ее, если вы не хотите тратить часы и часы на отладку связанных с пиком проблем.
apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py
Как вы заметили, я включил информация для Python 2.x и 3.x
Прежде всего, эта проблема существует из-за проблем с сетью, а удаление и повторная установка все не будет иметь большой поддержки. Вероятно, вы находитесь за прокси-сервером, и в этом случае вам нужно установить прокси.
Но в моем случае я столкнулся с проблемой, потому что я не был за прокси-сервером. Как правило, я работаю за прокси-сервером, но при работе на дому я устанавливаю прокси-сервер в None в настройках сети.
Но я все еще получал те же ошибки даже после удаления настроек прокси-сервера.
Итак, когда я набирал
env | grep proxy
, я нашел что-то вроде этого:
http_proxy=http://127.0.0.1:1234/
И именно по этой причине я все еще получал ту же ошибку, даже когда Я решил удалить настройки прокси.
Чтобы отключить этот прокси, введите
unset http_proxy
Следуйте тому же подходу для всех других записей, таких как https_proxy.
Я столкнулся с подобной проблемой при попытке установить awscli-инструмент на экземпляр ec2. Я изменил группу безопасности, чтобы разрешить входящий и исходящий доступ к порту 443, и это решило проблему для меня.
Я получил эту ошибку, когда пытался создать файл virtualenv
с командой virtualenv myVirtualEnv
. Я просто добавил sudo
перед командой; он решил все.