Запуск одного ядра IPython в нескольких виртуальных средах

Моя проблема в том, что каждый раз, когда я начинаю новый проект, мне нужно установить ядро ​​IPython в виртуальную среду этого проекта. Это проблема, потому что ядро ​​и все его зависимости находятся в файле require.txt каждого проекта, даже если они нужны только для разработки, а не для самого проекта. Например, для продвижения простого одностраничного веб-сайта в Heroku потребуется только flask, gunicorn и их зависимости. Но поскольку я занимаюсь разработкой с использованием Jupyter, это также "требует" всех пакетов, которые поставляются с ядром IPython:

backcall, colorama, parso, jedi, decorator, pickleshare, six, ipython-genutils, 
traitlets, wcwidth, prompt-toolkit, pygments, ipython, tornado, jupyter-core, pyzmq, 
python-dateutil, jupyter-client, ipykernel

Проблема не совсем в использовании виртуальных сред. Я могу изменить среду в Atom, и если я запускаю свой скрипт из терминала, он работает просто отлично. Но когда я пытаюсь запустить его непосредственно в записной книжке Jupyter, ядро ​​системного уровня не видит функции в виртуальной среде.

Вот как воссоздать проблему. Сначала создайте виртуальную среду. я использую pipenv, но также пытался virtualenvwrapper с такими же результатами. Затем переключитесь на окружающую среду. Я попробовал два метода, и оба работали:

  1. Запустите atom нормально и используйте пакет atom-python-virtualenv для выбора моей виртуальной среды (требуется virtualenvwrapper-win и некоторые настройки).
  2. Используя pipenv, запустите pipenv run atom . в windows cmd. (Некоторые пакеты Atom могут теперь найти свои зависимости с этим решением. Я исправил это, отредактировав соответствующие параметры, чтобы всегда указывать на python моей системы.)

Используя оба метода, я могу подтвердить, что нахожусь в правильной среде, используя терминал в атоме (я использовал platformio-ide-terminal), затем установите список пунктов колбы # показывает pip, setuptools и колбу установки колец колеса

Наконец, я запускаю ядро ​​IPython. Водород обнаруживает ядро, установленное на системном уровне, чего я и хочу. Однако, если я попытаюсь import flask внутри скрипта.py я получаю ModuleNotFoundError,

Я хотел бы, чтобы ядро ​​обнаружило среду, в которой я нахожусь, и увидело пакеты этой среды. Другими словами:

  1. Устанавливайте Jupyter, ядра и любые пакеты разработки только в моей системной среде
  2. Запустить Атом / Водород. Поскольку они установлены на системном уровне, они всегда смогут видеть Jupyter и мои ядра.
  3. Запустите ядро ​​и просмотрите его в системной среде.
  4. Убить ядро
  5. Переключитесь на новую среду , в которой нет ядра или ядра.
  6. Запустите ядро, которое обнаружит новую среду и увидит только пакеты в этой новой среде.

Я думал об отправке параметров ядру при запуске, чтобы указать, какую папку Python использовать, но она ищет свои функции инициализации в той папке, где она находится.

Симлинки может быть?

0 ответов

Другие вопросы по тегам