[英]How to call MATLAB library from Python virtual environment on Mac
我正在嘗試從虛擬環境中調用為 macOS 上的 Python 打包的 MATLAB 包。
為了在 macOS 上使用 MATLAB 運行時, 必須更新DYLD_LIBRARY_PATH
以指向 MATLAB 運行時以及libpython3.6.dylib
。
export DYLD_LIBRARY_PATH="/Applications/MATLAB/MATLAB_Runtime/v95/runtime/maci64:/Applications/MATLAB/MATLAB_Runtime/v95/sys/os/maci64:/Applications/MATLAB/MATLAB_Runtime/v95/bin/maci64:/Library/Frameworks/Python.framework/Versions/3.6/lib:${DYLD_LIBRARY_PATH}"
然后創建並激活一個 Python 虛擬環境:
$ python3.6 -m venv py36
$ source py36/bin/activate
接下來將為 Python 應用程序打包的MATLAB安裝到虛擬環境中:
(py36) $ cd /Applications/my_matlab_app/application
(py36) $ python setup.py install
(py36) $ pip list
Package Version
---------------------- -------
matlabruntimeforpython R2018b
pip 18.1
setuptools 40.6.2
現在嘗試運行一個腳本,在虛擬環境中導入您的 MATLAB 庫:
(py36) $ python matlab_test.py
Exception caught during initialization of Python interface. Details: On the Mac, use 'mwpython' rather than 'python' to start a script or session that will call deployed MATLAB code from Python.
Traceback (most recent call last):
File "matlab_test.py", line 26, in <module>
import my_matlab_app
File "/Users/user/venv/py36/lib/python3.6/site-packages/my_matlab_app/__init__.py", line 283, in <module>
_pir.import_cppext()
File "/Users/user/venv/py36/lib/python3.6/site-packages/my_matlab_app/__init__.py", line 276, in import_cppext
self.cppext_handle = importlib.import_module("matlabruntimeforpython" + self.interpreter_version)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
RuntimeError: On the Mac, use 'mwpython' rather than 'python' to start a script or session that will call deployed MATLAB code from Python.
問題是,據我所知, mwpython
不能在虛擬環境中使用。 有沒有辦法解決這個問題? 我們目前正在努力制作可重復的環境,因為mwpython
似乎對所有內容進行了硬編碼以進行全局安裝。
測試:
activate 腳本取消設置 PYTHONHOME 並設置 VIRTUAL_ENV,它是您的虛擬環境的文件夾路徑。 mwpython 將使用 PYTHONHOME 指向的 python 解釋器(當然,假設它是受支持的版本)。 因此,您只需要在調用 mwpython 之前設置並導出 PYTHONHOME 到 VIRTUAL_ENV,例如
python3.6 -m venv py36
source py36/bin/activate
export PYTHONHOME=$VIRTUAL_ENV
mwpython matlab_test.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.