Запуск одного ядра IPython в нескольких виртуальных средах - PullRequest
0 голосов
/ 24 января 2019

Моя проблема в том, что каждый раз, когда я начинаю новый проект, мне нужно установить ядро ​​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 моей системы.)

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

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

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

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

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

Возможно, символические ссылки?

...