4

在运行 Ubuntu 16.04 的 Vagrant VM 中,我使用以下命令创建了 Python 3 虚拟环境:

python3 -m venv /home/vagrant/venv

当 I 时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共享目录开始,但第二行似乎没有做任何事情。

4

2 回答 2

3

问题解决了。~/.profile将在每次 ssh 登录时运行:

config.vm.provision "shell", inline: 'echo ". /home/vagrant/venv/bin/activate" > ~/.profile', privileged: false
于 2017-01-21T11:08:11.810 回答
0

如果您在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

拯救 Vagrantfile后,不要忘记在终端上运行vagrant up --provision以使您的更改生效

于 2021-10-20T17:01:58.373 回答