似乎没有任何关于如何操作的文档。我进入/sdk/installer
并运行vboxsetup.py
脚本,但它引发了以下异常:
Exception: No VBOX_INSTALL_PATH defined, exiting
答案 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
说明:
为macOS安装VirtualBox
下载SDK,然后解压缩到$HOME/vboxtest/sdk
mkdir $HOME/vboxtest
创建python2 venv:
cd $HOME/vboxtest
virtualenv venv_vbox -p python2
source venv_vbox/bin/activate
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
模块。将stdout
和stderr
返回到主要控制python3
代码中。完成这项工作后,我得出了针对我的用例的更好方法是使用命令行vboxmanage
Automate box server setup