如何在Mac上安装VirtualBox SDK

时间:2011-11-08 04:45:56

标签: python macos virtual-machine virtualization virtualbox

似乎没有任何关于如何操作的文档。我进入/sdk/installer并运行vboxsetup.py脚本,但它引发了以下异常:

Exception: No VBOX_INSTALL_PATH defined, exiting

4 个答案:

答案 0 :(得分:5)

他们没有充分解释如何安装它真的很烦人,虚拟机安装本身不会创建VBOX_INSTALL_PATH变量,这很奇怪。
无论如何,这对我有用:

export VBOX_INSTALL_PATH=/usr/lib/virtualbox
sudo -E python vboxapisetup.py install

答案 1 :(得分:0)

五年后,事情似乎并没有取得太大进展。

在Mojave下,我brew安装了python2(2.7.15)和python3(3.7.0),并且必须执行以下操作:

cd /Applications/VirtualBox.app/Contents/MacOS/sdk/installer
sudo VBOX_INSTALL_PATH=/Applications/VirtualBox.app/Contents/MacOS /usr/local/bin/python2 vboxapisetup.py install
sudo VBOX_INSTALL_PATH=/Applications/VirtualBox.app/Contents/MacOS python3 vboxapisetup.py install

在安装VirtualBox之后,内置的Mojave版本的Python(/usr/bin/python版本2.7.10)是唯一可以import vboxapi运行的版本。我必须手动添加其他Python版本。

关于此问题的唯一说明是在SDK参考文献的第40页上,其中提示:

# cd VBOX_INSTALL_PATH/sdk/installer
# PYTHON vboxapisetup.py install

但是,当然没有提到环境变量。正如塔尔(Tal)在接受的答案中指出的那样,有趣的是,他们可能不愿意编写440页的SDK手册,但却没有提及它。

答案 2 :(得分:0)

这是一个通过面向对象的Web服务(针对Python)从VirtualBox SDK运行Python演示脚本vboxshell.py的最小示例。

经过测试:

  • 系统:macOS 10.15.2

  • VirtualBox版本:6.0.14

说明:

cd $HOME/vboxtest
virtualenv venv_vbox -p python2
source venv_vbox/bin/activate
  • 将依赖项安装到venv中:
wget https://netix.dl.sourceforge.net/project/pyxml/pyxml/0.8.4/PyXML-0.8.4.tar.gz
pip install PyXML-0.8.4.tar.gz
pip install ZSI
  • 禁用身份验证(用于测试):VBoxManage setproperty websrvauthlibrary null

  • 安装SDK python模块:

cd $HOME/vboxtest/sdk/installer
export VBOX_INSTALL_PATH=/usr/local/bin/virtualbox
export VBOX_SDK_PATH=$HOME/vboxtest/sdk
python vboxapisetup.py install
  • 启动API Web服务器:/Applications/VirtualBox.app/Contents/MacOS/vboxwebsrv -t 0

  • 启动实际的演示脚本:

cd $HOME/vboxtest
source venv_vbox/bin/activate
cd $HOME/vboxtest/sdk/bindings/glue/python/sample
export VBOX_INSTALL_PATH=/usr/local/bin/virtualbox
export VBOX_SDK_PATH=$HOME/vboxtest/sdk
python vboxshell.py -w

您应该获得一个virtualbox shell,您可以在其中列出所有虚拟机:

$ python vboxshell.py -w
Running VirtualBox version 6.0.14
vbox>
vbox>list
    Machine 'tmp_default_1572559409192_87222' [32844f81-f971-42f8-99d8-f3edbf0bf637], machineState=PoweredOff, sessionState=Unlocked
    Machine 'c4-2' [891a3509-fbc5-44be-816d-5045dd626157], machineState=PoweredOff, sessionState=Unlocked
vbox>

有关更多信息,请查看SDK文档:https://download.virtualbox.org/virtualbox/SDKRef.pdf

(由于Python2和ZSI都是EOL,因此应谨慎使用IMHO。

答案 3 :(得分:0)

使用虚拟环境的简单方法

尝试仅使用python3。对于Mac OS上的pyvbox API,我使用的是第二个virtualenv,它是python 2 Python2 venv

基础设置:

cd /Applications/VirtualBox.app/Contents/MacOS/sdk/installer
export VBOX_INSTALL_PATH=/Applications/VirtualBox.app/Contents/MacOS
sudo -E python3 vboxapisetup.py
cd $HOME
mkdir vbox
virtualenv -p /usr/bin/python venvpy2
source venvpy2/bin/activate
pip install virtualbox

我仍然只使用python3,然后使用subprocess.Popen初始化venvpy2并运行python2模块。将stdoutstderr返回到主要控制python3代码中。完成这项工作后,我得出了针对我的用例的更好方法是使用命令行vboxmanage Automate box server setup