Сегодня я столкнулся с тем же вопросом. Это оказалось проблемой, когда у меня было установлено несколько пакетов numpy. Более старая версия была установлена в /usr/lib/python2.7
, и правильная версия была установлена в /usr/local/lib/python2.7
.
Кроме того, у меня был PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages
. PYTHONPATH находил более старую версию numpy до правильной версии, поэтому, когда внутри интерпретатора Python, она импортировала бы более старую версию numpy.
Одна вещь, которая помогла открыть сеанс python, выполнить следующий код :
import numpy as np
print np.__version__
print np.__path__
Это должно сказать вам, какую версию Python использует, и где она установлена.
Чтобы исправить проблему, я изменил PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages
. И я также настраиваю виртуальную среду Python с помощью руководства Hitchiker для Python , в частности раздела под названием «Нижний уровень: virtualenv». Я знаю, что мне нужно было настроить виртуальную среду, но я устал и ленился.
(Обновление)
На всякий случай, когда документы будут перемещены снова, вот соответствующие бит на ...
Создание Виртуальная среда Python
Установите virtualenv через pip:
$ install virtualenv
Проверьте установку:
$ virtualenv --version
Опционально, переменная среды VIRTUALENVWRAPPER_PYTHON
изменится версия python по умолчанию, используемая виртуальными средами, например, для использования Python 3:
$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)
. При необходимости установите переменную среды WORKON_HOME
, чтобы изменить каталог по умолчанию, в котором созданы виртуальные среды Python, для Пример использования /opt/python_envs
:
$ export WORKON_HOME=/opt/python_envs
Создание виртуальной среды для проекта:
$ cd my_project_folder
$ virtualenv my_virtual_env_name
Активировать созданную виртуальную среду. Предположим, вы также установили WORKON_HOME=/opt/python_envs
:
$ source $WORKON_HOME/my_virtual_env_name/bin/activate
Установите все пакеты Python, которые требуется вашему проекту, используя один из двух следующих методов.
Способ 1 - Установить с помощью pip
из командной строки:
$ pip install python_package_name1
$ pip install python_package_name2
Способ 2 - Установить с помощью файла requests.txt
:
$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt
Необязательно, но настоятельно рекомендуется установить virtualenvwrapper
. Он содержит полезные команды, облегчающие работу с виртуальными средами Python:
$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
В Windows установите virtualenvwrapper
, используя:
$ pip install virtualenvwrapper-win
Базовое использование virtualenvwrapper Создайте новый виртуальный среда:
$ mkvirtualenv my_virtual_env_name
Список всех виртуальных сред:
$ lsvirtualenv
Активировать виртуальную среду:
$ workon my_virtual_env_name
Удалить виртуальную среду (предостережение! необратимо!):
$ rmvirtualenv my_virtual_env_name
Надеюсь, эта помощь!
Вы, вероятно, захотите настроить ловушку prepare-commit-msg
в вашем локальном репозитории. Это может выглядеть так (скажем, ветки названы 'work-on-ticket-XXXX':
#!/bin/sh
ORIG_MSG_FILE="$1"
TEMP=`mktemp /tmp/git-XXXXX`
TICKETNO=`git branch | grep '^\*' | cut -b3-`
(echo "Work on ticket #$TICKETNO"; cat "$ORIG_MSG_FILE") > "$TEMP"
cat "$TEMP" > "$ORIG_MSG_FILE"
Поместите что-нибудь подобное (помеченный исполняемый файл) в .git / hooks / prepare-commit-msg
. Вам, возможно, придется, конечно, отрегулировать и уточнить это.
Похоже, вы сможете сделать это, используя .git / hooks / pre-commit-msg
Простым примером этого может быть:
#!/bin/sh
# $1 contains the file with the commit msg we're about to edit.
# We'll just completely clobber it for this example.
echo "Hello" > "$1"
Это заставит вас коммит начинается с «Привет». Очевидно, поскольку это скрипт, вы можете поработать здесь волшебно, чтобы заполнить номер вашего билета и любую другую информацию. В каталоге .git / hooks / должен быть pre-commit-msg.sample, сообщающий вам, какие аргументы получит скрипт, если вам понадобится что-то еще.