python - 在 vagrant up 上运行 python 脚本

标签 python vagrant vagrantfile

我正在尝试运行一个 vagranfile,它将导致运行 python flask 应用程序。我试过用这个作为最后一个命令来实现这个 - config.vm.provision :shell, :path => "python app.py" 但它导致了以下错误 -

*shell provisioner 的路径在主机系统上不存在:/Users/*****/code/app-vagrant/python app.py

我知道脚本试图从主机运行这个命令,我如何让 Vagrant 在启动的 vagrant 机器上运行脚本?

最佳答案

您有 2 个选项来使用 vagrant shell provisioner 运行脚本您必须传递 inlinepath 参数:

inline (string) - Specifies a shell command inline to execute on the remote machine.

path (string) - Path to a shell script to upload and execute. It can be a script relative to the project Vagrantfile or a remote script (like a gist).

因此,当您传递 :path => "python app.py" 时,系统会尝试在您的主机上查找名为 python app.py 的脚本。

使用 inline 参数替换,它将实现你想要的

config.vm.provision :shell, :inline => "python app.py"

注意:provisioner 默认以 root 用户身份运行,如果你想更改并以 vagrant 用户身份运行它:

config.vm.provision :shell, :inline => "python app.py", :privileged => false

关于python - 在 vagrant up 上运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694311/

相关文章:

ubuntu - 如何设置 PyCharm 以在 Vagrant/VirtualBox 远程解释器配置中使用 virtualenv?

Vagrant 与 Chef Zero 在初始启动时失败,但在后续配置中成功

docker - Vagrant 与 Docker 提供商 : specifying CPU and Memory

vagrant - Windows 上的 Rsync - dup() 输入/输出/错误失败

python - Python 3 中的不可变字典 : how to make keys(), items() 和 values() 字典 View 不可变

python - 方法中的单个字符串或字符串列表

Python CSV——优化CSV读写

c# - EventWaitHandle "No handle of the given name exists"Vagrant 远程虚拟机 C# PowerShell

Vagrant/etc/hosts : machine IP vs localhost

python - 解决 sys.path 和 os.path.join 中的混合斜线问题