Swift + Python: No module named librosa or pyaudio

Viewed 965

I am performing a simple test to load Python libraries in a Swift app (below is the code). All the Python libraries load OK except librosa and pyaudio (yes I have them installed via pip and yes they work in native Python). When I run the app I get the error message "Python exception: No module named x", where x is librosa or pyaudio. The other Python libraries load and work perfectly. So, what do I have to do in order to get the librosa and pyaudio libraries to work in Swift?

let np = Python.import("numpy")
let plt = Python.import("matplotlib.pyplot")
let rosa = Python.import("librosa")
let audio = Python.import("pyaudio")
let display = Python.import("IPython.display")
let pd = Python.import("pandas")

My system:

macOS Mojave: Version 10.14.2 Beta (18C38b)
Xcode: Version 10.1 (10B61)
Toolchain: Swift for TensorFlow Development Snapshot 2018-10-17
1 Answers

The Swift for TensorFlow Python module is built linked against the system Python. So, if you use something like homebrew to install Python2/Python3 then Swift for TensorFlow will not see those packages installed. Therefore, you have to make sure that you uninstall python@2 and use the system Python. The system Python does not include pip and so you will need to install that. Once you have installed pip you can see that Swift for TensorFlow has already installed a few Python libraries for you (which is why matplotlib.pyplot and numpy could be imported). Now, you can pip install the Python libraries you need and they will indeed now be seen inside Swift for TensorFlow.

Related