Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Я знаю, что это в значительной степени решено в ваших комментариях, но это только для Mac,
и даже больше, я думаю, что правильный путь должен заключаться в том, чтобы установить VIRTUALENVWRAPPER_PYTHON
для реального питона, который вы используете в команде линия.
Чтобы быть уверенным, что вы можете сделать which python
.
На самом деле, вы даже можете сделать:
export VIRTUALENVWRAPPER_PYTHON=`which python`
В Linux я делаю это в моем .bashrc, так что в целом, если вы установили virtualenv и создали свою первую «виртуальную среду» virtualenv
( насколько оригинально)
. virtualenv/bin/activate
export WORKON_HOME=$HOME/.virtualenvs # or whatever else you want
export VIRTUALENVWRAPPER_PYTHON=`which python`
export PROJECT_HOME=SOMETHING
source $HOME/virtualenv/bin/virtualenvwrapper.sh # or wherever else you got that installed
(и, между прочим, вы написали:
Я проверил свой .profile, и он устанавливает VIRTUALENVWRAPPER_PYTHON в / opt / local / bin / python, поэтому мне кажется, что virtualenvwrapper должен работать независимо от того, какой Python я выбрал
, что на самом деле противоположно - virtualenv использует правильный python (и пакеты, которые идут с ним), поэтому это очень важно соответственно установить путь к python.
Даже запуск py-файла с "#! / bin / python" может вызвать проблемы, когда вы станете виртуозным!
Сначала проверьте, какой Python вы установили:
$ `which python` -V
Если это возвращает «Python 2.7.12», то вы настроены на запуск:
$ mkvirtualenv -p `which python` api_server
Running virtualenv with interpreter /usr/local/bin/python
New python executable in /Users/eric/.virtualenvs/api_server/bin/python2.7
Also creating executable in /Users/eric/.virtualenvs/api_server/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/get_env_details
Это также активируйте api_server
workon, который меняет ваш исполняемый файл на python:
$ which python
/Users/eric/.virtualenvs/api_server/bin/python
$ python -V
Python 2.7.12
Что на самом деле делает which python
? Он выводит каталог исполняемых файлов python, найденных в вашем PATH:
$ which python
/usr/local/bin/python
Используя which python
, вы в основном переходите в /usr/local/bin/python
к опции -p
в каталоге mkvirtualenv.
Что происходит, когда в which python
возвращено более одного исполняемого файла python? Просто найдите тот, который вам нужен, и передайте его:
$ mkvirtualenv -p /usr/local/bin/python3 api_server
И в итоге virtualenvwrapper будет использовать этот исполняемый файл python.
Подтверждено использование двух одноименных переменных среды:
VIRTUALENVWRAPPER_PYTHON
- какая версия Python используется самой утилитой virtualenvwrapper. Другими словами, какая версия Python выполняет virtualenvwrapper
, как если бы эта версия Python была явно названа в строке #!
файла сценария virtualenvwrapper.
VIRTUALENV_PYTHON
- какая версия Python будет установлена virtualenv
при создании новой виртуальной среды. Эквивалент опции -p / --python
в командной строке virtualenv
.
И, возможно, очевидно :) версия Python, запускаемая в виртуальной среде, - это версия, которую вы устанавливаете для этой среды - она не имеет отношения к указанным выше переменным среды после создания env.
См. https://stackoverflow.com/a/24724360/763269 , чтобы узнать, как обновить Python в virtualenv.
Вы можете явно выбрать версию Python
mkvirtualenv -p python3 venvname
или
mkvirtualenv -p python2.7 venvname
.