Подтвердить что ты не робот

Ошибка 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

Пожалуйста, помогите: (

4b9b3361

Ответ 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 = "./"