Ошибка virtualenvwrapper.sh при запуске терминала
Поскольку я начинаю изучать программирование на Python, я установил virtualenvwrapper с помощью следующих команд:
# Install distribute: http://pypi.python.org/pypi/distribute
wget http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
# Install pip http://pypi.python.org/pypi/pip
sudo easy_install pip
# Install virtualenv
sudo pip install virtualenv
# Install virtualenvwrapper
sudo pip install --upgrade virtualenvwrapper
virtualenvwrapper.sh
echo source `which virtualenvwrapper.sh` >> $HOME/.bashrc
# IMPORTANT
# Go to the working directory
# Start a working environment virtualenv
mkvirtualenv <working environment name>
# Install all the requirements for the working environment
pip -E $VIRTUAL_ENV install -r requirements.txt
Я получаю эту ошибку каждый раз, когда я открываю терминал (через guake)
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/virtualenvwrapper/hook_loader.py", line 72, in main
backupCount=1,
File "/usr/lib/python2.6/logging/handlers.py", line 112, in __init__
BaseRotatingHandler.__init__(self, filename, mode, encoding, delay)
File "/usr/lib/python2.6/logging/handlers.py", line 64, in __init__
logging.FileHandler.__init__(self, filename, mode, encoding, delay)
File "/usr/lib/python2.6/logging/__init__.py", line 827, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.6/logging/__init__.py", line 846, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 2] No such file or directory: '/home/ahim/$VIRTUALENVWRAPPER_LOG_DIR/hook.log'
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly.
Я использую Linux Mint 10 64bit GNOME.
Есть ли способ решить эту ошибку, которую я вижу в терминале?
Я пробовал искать через google, но ни один из них, похоже, не исправил эту проблему.
Спасибо заранее.
=== Редактирование ===
Это то, что написано в /home/user/.bashrc
source /usr/local/bin/virtualenvwrapper.sh 2> /dev/null
VIRTUALENVWRAPPER_LOG_DIR=/tmp
export VIRTUALENVWRAPPER_LOG_DIR
Пожалуйста, помогите: (
Ответы
Ответ 1
В соответствии с этим, это кажется ошибкой с пакетом APT на Debian/Ubuntu/Mint.
Сначала я установил virtualenvwrapper через APT, затем удалил его и установил его через pip.
apt-get install virtualenvwrapper
apt-get remove virtualenvwrapper
pip install virtualenvwrapper
Пакет APT добавил файл /etc/bash_completion.d/virtualenvwrapper
, но не удалил его. Это файл, который вызывает проблемы.
Рекомендуемое решение - удалить этот файл, а ошибки перестать появляться. (Странно, просто переименовать файл было недостаточно).
Ответ 2
Для тех, кто пришел позже, у меня была та же проблема на Ubuntu 12 и решена так:
-
Переключиться на правильного пользователя:
su username
-
Убедитесь, что переменная WORKON_HOME установлена на путь, которым вы хотите (по умолчанию - ~/.virtualenv)
WORKON_HOME=$HOME/.virtualenv
-
Затем добавьте эти две строки перед вашей исходной командой:
export VIRTUALENVWRAPPER_LOG_DIR="$WORKON_HOME"
export VIRTUALENVWRAPPER_HOOK_DIR="$WORKON_HOME"
-
Затем сохраните и переустановите файл bashrc:
source ~/.bashrc
Ответ 3
Для полного удаления в debian удалите следующее:
/usr/local/bin/virtualenvwrapper*
/etc/bash_completion.d/virtualenvwrapper
Это сработало для меня
Также удалите файлы из python dist-packages (зависит от версии дистрибутива и python)
Ответ 4
Вам нужно установить переменную среды VIRTUALENVWRAPPER_LOG_DIR
. Добавьте это в свой .bashrc
файл:
VIRTUALENVWRAPPER_LOG_DIR=/tmp
export VIRTUALENVWRAPPER_LOG_DIR
Ответ 5
У меня была аналогичная проблема, пытаясь заставить ее работать на Debian. Мне нужно было запустить его как пользователь, отличный от X-пользователя, но он использовал каталог ~/.virtualenvs
для пользователя X для WORKON_HOME
, VIRTUALENVWRAPPER_LOG_DIR
и VIRTUALENVWRAPPER_HOOK_DIR
.
Теперь он работает, когда я установил эти переменные в соответствующий каталог в ~/.bashrc
.
Ответ 6
Попробуйте использовать команду export следующим образом:
$export VIRTUALENVWRAPPER_LOG_DIR = "/path/to/the/hook.log"
В моем случае hook.log был создан по тому же пути, что и моя версия virtualenvwrapper, где в /home/my _user/.virtualenvs, так что я сделал, чтобы экспортировать переменную, подобную этой
$export VIRTUALENVWRAPPER_LOG_DIR = "./"