Я использую virtualenv, так для запуска я должен сказать
source some/long/path/bin/activate
Иногда (очень часто, на самом деле) я хочу создать другую вкладку в терминале, отредактировать другой сценарий или выполнить оболочку django и т.д. И после создания другой вкладки я должен сказать source some/long/path/bin/activate
снова. На самом деле это довольно скучно.
Там какой-либо путь состоит в том, чтобы вызвать терминальное выполнение это волшебные слова автоматически? Таким образом, если я ввожу CtrlShiftT в терминале, и на текущей вкладке virtualenv, работал, терминал должен открыть тот же самый virtualenv на свежей новой вкладке.
Или может быть что-то совершенно другое для решения этой проблемы.
Я использую conda для виртуальных сред, и я чувствовал ту же потребность как Ваш вопрос. Таким образом, я записал простой сценарий оболочки для меня. Затем я столкнулся с этим вопросом и переписал мой сценарий для virtualenv использования.
tab
. sudo chmod +x tab
. mv tab /usr/local/bin/
для создания этого вызываемой командой отовсюду. sudo apt install xclip xdotool, wmctrl
source /.../bin/activate
, но я теперь могу сделать tab
! #!/bin/sh
# Copy the clipboard content to restore later
original_clipboard=$(xclip -o)
# Copy the path of your virtual environment to clipboard
echo $VIRTUAL_ENV | xclip
# The following four lines open a new tab and switch to it.
# Copied from: https://stackoverflow.com/a/2191093/10953328
WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID
# Activate your virtualenv
xdotool type --delay 0.5 --clearmodifiers "source $(xclip -o)/bin/activate"
xdotool key Return;
# Restore the original clipboard content
echo $original_clipboard | xclip
Протестированный с Ubuntu 18.0.4, GNOME 3.28.2, и это хорошо работает. xdotools 3.20160805.1, xclip 0.12, wmctrl 1.07, но я действительно не думаю, что это будет иметь значение очень, не так ли?
Некоторая часть сценария копируется от это, ТАК ответьте , как упомянуто в самом сценарии.
Автоматически выполнение команды на создании новой терминальной вкладки было бы функцией определенного терминала, с которым Вы используете, и не связанные python
или virtualenv
.
Иметь более широкий диапазон или отвечает на вопрос, должен был бы, вероятно, быть То, как автоматически выполнить команду оболочки для эмулятора терминала xyz. Например, для gnome-terminal
можно использовать пользовательские профили, как описано в https://unix.stackexchange.com/a/3856/15312, но это - непортативное решение, если Вы решаете переключиться на другой терминал или платформу.
Более простое и больше портативного обходного решения настроили бы псевдонимы для Вашей оболочки так, чтобы Вы не должны были вводить слишком много.
Конкретно относительно virtualenv
: Вы могли бы хотеть попробовать virtualenvwrapper, который может помочь уменьшить объем ввода и сделать руководящие среды легче путем обеспечения автозавершения для virtualenv папок.
И наконец, как быстрое обходное решение, вместо того, чтобы создать новые вкладки с тем же ENV, можно приостановить в настоящее время рабочий процесс (такой как manage.py runserver
) с Ctr+z, дополнительно выполненным bg
для возобновления его в фоне затем отредактируйте и сохраните файл и возвратите его переднему плану с fg
. Дополнительную информацию см. в этом.