Как изменить PYTHONPATH ядра ipython? - PullRequest
0 голосов
/ 27 января 2019

Я занимаюсь анализом и намереваюсь реструктурировать свои скрипты в пакет.У меня есть такая структура каталогов:

project
|   README.md
|   setup.py
|   requirements.txt
|
└───data
└───notebooks
|     notebook_A.ipynb
|
└───my_package
    |   __init__.py
    |
    └───module_A
    |    __init__.py
    |    source_A.py
    |
    └───module_B
        __init__.py
        source_B.py

Сначала я создам среду с помощью Conda:

conda create my_environment

Затем цель состоит в том, чтобы сделать my_package импортируется в ноутбуки без потери возможности редактирования исходного кода.Итак, я буду запускать:

$ (my_environment) pip install -e .

Это работает, как ожидалось, и создает:

/Applications/anaconda3/envs/my_environment/lib/python3.6/site-packages/my_package.egg-link

Затем я хочу проверить, все работает:

$ (my_environment) cd notebooks

Все работает вipython:

$ (my_environment) ipython


In [1]: import src
In [2]: src.__path__
Out[2]: ['/Users/jalmarituominen/Desktop/my_environment_project/src']

Но когда я запускаю ноутбук jupyter и запускаю его с ядром my_environment , я получаю

import sys
sys.path
[1]:
['',
'/Applications/anaconda3/lib/python36.zip',
'/Applications/anaconda3/lib/python3.6',
'/Applications/anaconda3/lib/python3.6/lib-dynload',
'/Applications/anaconda3/lib/python3.6/site-packages',
'/Applications/anaconda3/lib/python3.6/site-packages/aeosa',
'/Applications/anaconda3/lib/python3.6/site-packages/IPython/extensions',
'/Users/jalmarituominen/.ipython']

Очевидно, что не могу импортировать my_package , поскольку его нет в PATH.

Однако, когда я меняю ядро ​​на Python 3 , я получаю:

import sys
sys.path
[1]:
['/Applications/anaconda3/envs/my_environment/lib/python36.zip',
'/Applications/anaconda3/envs/my_environment/lib/python3.6',
'/Applications/anaconda3/envs/my_environment/lib/python3.6/lib-dynload',
'',
'/Applications/anaconda3/envs/my_environment/lib/python3.6/site-packages',
'/Users/jalmarituominen/Desktop/my_environment_project',
'/Applications/anaconda3/envs/my_environment/lib/python3.6/site-packages/IPython/extensions',
'/Users/jalmarituominen/.ipython']

И my_package импортируется.

По какой-то причине пути этих двух сред перепутаны.Есть идеи, как решить эту проблему?Можно ли вручную изменить ПУТЬ ядра?

1 Ответ

0 голосов
/ 27 января 2019

Здесь я хочу, чтобы Jupyter сделал что-то, чтобы облегчить изменение окружающей среды.Вот что я сделал, чтобы получить исправленные результаты:

$ conda activate my_env
$ (my_env) conda install ipykernel -y
$ (my_env) python -m ipykernel install --user --name my_env --display-name "My Env"

Затем я убедился, что у меня есть правильный путь Python к моему env

$ (my_env) jupyter kernelspec list | grep my_env

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

После этого я мог переключаться между ядрами.

...