2015-05-03 3 views
2

Моего текущего состояния таково:Как я могу остановить virtualenv изменения моего PATH заказ

>>> virtualenv --version 
1.11.6 
>>> export PATH=$(getconf PATH) 
>>> . ~/.bashrc 
>>> echo -e "${PATH//:/\\n}" 
/bin 
/usr/bin 
/home/jozxyqk/bin 
/usr/local/cuda/bin 

Но после активации виртуальной среды,

>>> . env/bin/activate 
>>> echo -e "${PATH//:/\\n}" 
/home/jozxyqk/somepath/env/bin 
/usr/local/cuda/bin 
/usr/lib64/qt-3.3/bin 
/usr/lib64/ccache 
/usr/local/bin 
/usr/bin 
/usr/local/sbin 
/usr/sbin 
/home/jozxyqk/bin 

Теперь /usr/local/cuda/bin появляется перед /usr/bin и вещами начинают использовать действительно старой версии gcc, потому что есть символическая ссылка в cuda/bin (я пытаюсь использовать pip install материал, который нуждается в gcc). Теперь в моем случае я могу обойти это, удалив мою символическую ссылку, но упорядочение afaik в PATH очень важно для сохранения. Помимо нарушения вещей, позволяя изменить положение /usr/bin, кажется a bit of a security issue.

Это ошибка, и есть ли обходной путь или я сделал что-то неправильно?

+0

Я предполагаю, что 'virtualenv' запоминает путь, который у вас был, когда вы его впервые установили. – tripleee

+0

@tripleee Ooh. Активация просто не обновляет путь при повторном запуске. Отличная добыча! Разве я не чувствую себя глупо сейчас. 'unset _OLD_VIRTUAL_PATH' и повторный запуск активации разрешает его. Я приму ответ, если вы его напишете. – jozxyqk

ответ

3

virtualenv запоминает путь, который у вас был, когда вы его впервые установили. unset _OLD_VIRTUAL_PATH и перезапустите activate, чтобы сбросить его.

Смежные вопросы