Я настроил контейнерный сервер JupyterHub, который порождает контейнеры JupyterLab для ноутбуков в контейнерах, по одному на пользователя. Последний контейнер монтирует домашнюю директорию хоста пользователя, так что пользователь может получить доступ к своим сценариям и записным книжкам из контейнера JupterLab.
Однако пользователь может быть не удовлетворен средой Python, связанной с JupyterLab docker и может захотеть добавить ядро Jupyter из пользовательского виртуального окружения. И вместо того, чтобы воссоздавать виртуальную среду в контейнере, пользователь, скорее всего, предпочтет повторно использовать виртуальную среду, которую он уже создал на хост-машине, в своей домашней папке.
Итак, я попытался активировать виртуальную среду созданный на хост-машине из контейнера Jupyterlab с чем-то вроде:
source /path/to/env/bin/activate
which python
, затем указывает на правильный интерпретатор Python, то есть /path/to/env/bin/python
К сожалению, когда я тогда пытаюсь выполнить Python (из Jupyerlab docker), он выдает следующую ошибку:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Current thread 0x00007f48a97de080 (most recent call first):
Aborted
Итак, возможно ли это сделать, то есть активировать виртуальная среда, созданная на хосте, из контейнера? Другими словами, чтобы разделить виртуальную среду между хостом и контейнером?