Использование разных версий python с virtualenvwrapper

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

26
задан 0xC0000022L 23 April 2012 в 18:09
поделиться

4 ответа

Я знаю, что это в значительной степени решено в ваших комментариях, но это только для 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" может вызвать проблемы, когда вы станете виртуозным!

29
ответ дан Mad Physicist 23 April 2012 в 18:09
поделиться
1111 Ничего из этого не сработало. Сначала я установил Python3 при настройке своей машины для OSX, а также pip и все по умолчанию.

Сначала проверьте, какой 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.

14
ответ дан eduncan911 23 April 2012 в 18:09
поделиться

Подтверждено использование двух одноименных переменных среды:

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.

8
ответ дан Chris Johnson 23 April 2012 в 18:09
поделиться

Вы можете явно выбрать версию Python

mkvirtualenv -p python3 venvname

или

mkvirtualenv -p python2.7 venvname
.
6
ответ дан Dos 23 April 2012 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: