当我通过 ssh 进入 vagrant box 时,如何自动激活 Python venv?
How can I activate a Python venv automatically when I ssh into a vagrant box?
在 Vagrant VM 运行 Ubuntu 16.04 中,我创建了一个 Python 3 虚拟环境,使用:
python3 -m venv /home/vagrant/venv
当我 vagrant ssh
时,我可以使用以下任一方式激活它:
source /home/vagrant/venv/bin/activate
或
. /home/vagrant/venv/bin/activate
在配置期间,我正在创建文件 /etc/profile.d/login-bash.sh
:
cd /vagrant
. /home/vagrant/venv/bin/activate
当我 ssh
进入时,该文件是 运行 因为我从 /vagrant
共享目录开始,但第二行似乎没有做任何事情。
问题已解决。 ~/.profile
将在每次 ssh 登录时 运行:
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate" > ~/.profile', privileged: false
如果您在 Vagrantfile 中使用以下行,问题将得到解决:
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate" > ~/.profile', privileged: false
如果您需要激活 python 环境并将目录更改为 /vagrant,请在 Vagrantfile:
中使用以下行
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate && cd /vagrant" > ~/.profile', privileged: false
在一天结束时,你的 Vagrantfile 应该看起来像(加上你自己的配置):
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate && cd /vagrant" > ~/.profile', privileged: false
end
不要忘记在终端 运行 vagrant up --provision
使你的更改在 salve 之后生效 Vagrantfile
在 Vagrant VM 运行 Ubuntu 16.04 中,我创建了一个 Python 3 虚拟环境,使用:
python3 -m venv /home/vagrant/venv
当我 vagrant ssh
时,我可以使用以下任一方式激活它:
source /home/vagrant/venv/bin/activate
或
. /home/vagrant/venv/bin/activate
在配置期间,我正在创建文件 /etc/profile.d/login-bash.sh
:
cd /vagrant
. /home/vagrant/venv/bin/activate
当我 ssh
进入时,该文件是 运行 因为我从 /vagrant
共享目录开始,但第二行似乎没有做任何事情。
问题已解决。 ~/.profile
将在每次 ssh 登录时 运行:
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate" > ~/.profile', privileged: false
如果您在 Vagrantfile 中使用以下行,问题将得到解决:
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate" > ~/.profile', privileged: false
如果您需要激活 python 环境并将目录更改为 /vagrant,请在 Vagrantfile:
中使用以下行config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate && cd /vagrant" > ~/.profile', privileged: false
在一天结束时,你的 Vagrantfile 应该看起来像(加上你自己的配置):
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate && cd /vagrant" > ~/.profile', privileged: false
end
不要忘记在终端 运行 vagrant up --provision
使你的更改在 salve 之后生效 Vagrantfile