我正在尝试在 Mac M1 上使用 VirtualBox Python API。尝试导入 VBoxPython3.so 时,出现 ImportError,内容如下:
ImportError: dlopen(/Applications/VirtualBox.app/Contents/MacOS/VBoxPython2_7.so, 0x0002): tried: '/Applications/VirtualBox.app/Contents/MacOS/VBoxPython2_7.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
如前所述,我使用的是 ARM64 架构,并且安装了 VirtualBox 的 ARM64,那么为什么我会收到此消息:
need 'x86_64'
?
系统详情:
uname -a
的输出是Darwin KiransMacbookPro.local 22.3.0 Darwin Kernel Version 22.3.0: Thu Jan 5 20:48:54 PST 2023; root:xnu-8792.81.2~2/RELEASE_ARM64_T6000 arm64
uname -m
的输出是arm64
我首先通过 conda 安装了 python 3.11。然后,我按照以下步骤操作:
export VBOX_INSTALL_PATH=/Applications/VirtualBox.app/Contents/MacOS
/Applications/VirtualBox.app/Contents/MacOS/sdk/installer
,然后运行 sudo -E python vboxapisetup.py install
pip install virtualbox
,然后确认 virtualbox 和 vboxapi 软件包都是通过 pip list
python -m "import virtualbox; _vbox = VirtualBox(); print('Success')"
来查看实例化 VirtualBox 是否有效这导致
vboxxpcom.py
出现错误,内容为:Cannot find VBoxPython module (tried: VBoxPython3_11, VBoxPython3, VBoxPython)
。
我首先确认以下文件存在:
/Applications/VirtualBox.app/Contents/MacOS/VBoxPython3.so
。然后,我尝试手动导入它,如下所示:python -m "import sys; sys.path.append('/Applications/VirtualBox.app/Contents/MacOS'); __import__('VBoxPython3')"
。这与导致 vboxxpcom.py
中错误的导入相同。该行返回:
ImportError: dlopen(/Applications/VirtualBox.app/Contents/MacOS/VBoxPython2_7.so, 0x0002): tried: '/Applications/VirtualBox.app/Contents/MacOS/VBoxPython2_7.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
原来我的
python
库是一个x86_64
版本。尝试安装 arm64
版本的 python(或者在我的例子中,conda)。