【问题标题】:How to install VirtualBox SDK on Mac如何在 Mac 上安装 VirtualBox SDK
【发布时间】:2011-12-24 04:01:08
【问题描述】:

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

Exception: No VBOX_INSTALL_PATH defined, exiting

【问题讨论】:

  • 这不是真正的编程问题,而是软件应用问题。

标签: python macos virtual-machine virtualization virtualbox


【解决方案1】:

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

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

【讨论】:

  • 谢谢,对 Ubuntu 也有效!
【解决方案2】:

五年过去了,事情似乎没有太大进展。

在 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

Python 的内置 Mojave 版本(/usr/bin/python 版本 2.7.10)是安装 VirtualBox 后唯一可以import vboxapi 的版本。我不得不手动添加其他 Python 版本。

我能找到的唯一说明出现在 SDK ref 的第 40 页,其中建议:

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

但是,当然没有提到环境变量。正如 Tal 在接受的答案中指出的那样,有趣的是,他们可能会费心编写 440 页的 SDK 手册,但却没有提及这一点。

【讨论】:

    【解决方案3】:

    这是通过面向对象的 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 网络服务器:/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)。

    【讨论】:

      【解决方案4】:

      使用虚拟环境的简单方法

      尝试只使用 python 3。对于 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 2011-03-30
        • 2022-01-13
        相关资源
        最近更新 更多