【发布时间】:2024-01-24 05:07:02
【问题描述】:
我正在进行分析,我打算将我的脚本重组为一个包。我有一个这样的目录结构:
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 notebook 并使用 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 是可导入的。
由于某种原因,这两种环境的路径混淆了。知道如何解决这个问题吗?是否可以手动更改内核的路径?
【问题讨论】:
标签: python anaconda jupyter-notebook ipython data-science