Я выполняю скрипт Python как подпроцесс. Выполнение этого из обычного модуля наследует виртуальную среду, но когда я делаю это внутри блокнота Jupyter, подпроцесс использует системный Python. Почему это так и как я могу это исправить независимо от платформы? (Я не знаю, какие виртуальные среды будут использовать другие пользователи.)
Минимальный пример:
# kernel_printer.py
import sys
import os
def print_kernel():
kernel_name = os.path.basename(sys.executable.replace("/bin/python", ""))
print('Kernel: ', kernel_name)
if __name__ == '__main__':
print_kernel()
Код, который будет выполняться как скрипт или как ячейка блокнота:
import subprocess
print(subprocess.run(['python', 'kernel_printer.py'], capture_output=True))
# as module: subprocess output contains print of activated virtualenv
# as notebook cell: ... systemwide python is printed as current kernel
Обратите внимание, что ноутбук Jupyter действительно использует ту же виртуальную среду, что и модуль. То есть следующий код печатает имя виртуальной среды независимо от того, выполняется ли она в модуле или ячейке записной книжки.
import kernel_printer
kernel_printer.print_kernel()
# always prints name of virtual env
Подробнее здесь: https://stackoverflow.com/questions/786 ... on-virtual
Подпроцесс, инициированный из блокнота Jupyter, не использует ту же виртуальную среду Python. Почему и как исправить? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Создайте виртуальную среду Windows Python с определенной версией Python.
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Создайте виртуальную среду Windows Python с определенной версией Python.
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-