Technical Articles
Persisting Python environment when using Jupyter in SAP Business Application Studio
Some time ago my teammate Antonio Maradiaga published a post about Running a Jupyter notebook in SAP Business Application Studio with packages, like Python Machine Learning Client for SAP HANA.
If you used that approach, then you might find that by default all Python packages installed by you are going to a user location /home/user/.local/lib/python3.9/site-packages
, as can be checked with the following commands:
python3 -c "import sysconfig; print(sysconfig.get_scheme_names())"
python3 -c "import sysconfig; print(sysconfig.get_paths('posix_user'))"
python3 -c "import sysconfig; print(sysconfig.get_path('purelib', 'posix_user'))"
The problem with this location is it is not persisted between restarts of your BAS DevSpace.
So, you need to run pip install ...
again next time you start your DevSpace.
Use Python virtual environment
The way I approach this in a DevSpace, assuming Jupyter and Python extensions are installed…
…is to use Python’s virtual environment for my Jupyter project.
Let’s say my project in BAS is called hanaml_demo
, ie. it is located in the directory /home/user/projects/hanaml_demo
.
mkdir ~/projects/hanaml_demo && cd ~/projects/hanaml_demo
pwd
Create a virtual environment with venv
The built-in venv
module in Python provides support for creating lightweight “virtual environments” with their own site directories, optionally isolated from system site directories.
python3 -m venv env --upgrade-deps
source env/bin/activate
which python
Now — that virtual environment env
is activated — you should install Python packages into the “home” location, not into the “user” one.
python3 -c "import sysconfig; print(sysconfig.get_path('purelib', 'posix_home'))"
Install ipykernel
package
As Antonio mentioned in his post you will need to install ipykernel
package to be able to run Python code using Jupyter in SAP Business Application Studio.
python -m pip install ipykernel
Install hana-ml
or other required packages
In my case I want to use like Python Machine Learning Client for SAP HANA for which I need to install hana-ml
and some other packages depending on what functionality I plan to use: https://help.sap.com/doc/cd94b08fe2e041c2ba778374572ddba9/2023_1_QRC/en-US/Installation.html#installation-guide
python -m pip install hana-ml 'jinja2>=3' ipywidgets wordcloud 'plotly>=4.14.3' 'shapely>=1.7.1'
python -m pip show hana-ml
Start Jupyter
and set the kernel to Python interpreter
from the virtual environment
Now in SAP Business Application Studion click on Explorer in the Activity tab, and then on the button “Open Folder”…
… and choose a folder with a project that has the virtual environment included…
… to open a project.
Then open the Command Pallet…
Once it is started you should see notifications about Jupyter kernel services started.
Run simple cells to validate
import hana_ml
hana_ml.__version__
Let’s save this notebook as test.ipynb
.
Using Git?
Do not forget about .gitignore
file!
You can add env to your .gitignore
, or just simply use one of the prepared templates, like https://github.com/github/gitignore/blob/main/Python.gitignore:
Restart your BAS Dev Space…
…and everything should keep working in Jupyter!
Regards,
-Vitaliy, aka @Sygyzmundovych
Thank you Witalij Rudnicki, for sharing this useful blog.
High productivity tools for Python development in SAP Business Application Studio is part of Q2 roadmap.
BR,
Avital Margalit
Product Owner, SAP Business Application Studio
Thank you Witalij for the great article.
I tried all the steps however, I am not able to see the env kernel in the notebook. Could you please advise what could be the issue?
Thanks, Bhagabat
Hi Bhagabat,
could you solve this ?
I seem to have the same issue.
Regards
Marcus
Hi https://people.sap.com/marcus.schiffer, https://people.sap.com/bhagabat
The fix was implemented last weekend, and I was able to select a kernel in Jupyter in BAS now.
I hope it works now for you too.
Sorry for the inconvenience and the delay,
-Witalij
Hi,
same issue for me. No python kernel visible. Python 3.9.2 is installed in usr/bin. Tried to uninstall the extensions and reinstall etc. No success.
What might be wrong ?
Any help appreciated.
Regards
Marcus
Hi Marcus. The engineering team is aware of the issue, which was caused by the incompatibility of open-source components used. They are working on the solution, but I do not have information about the date.
Sorry for the inconvenience.
-Witalij
Hi Witalij,
thanks for clarification.
I will have patience....
Regards
Marcus