我在做分析,我打算把我的脚本重组成一个包。我的目录结构如下:
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 create my_environment
然后,我们的目标是使my_package在笔记本中可导入,而不丧失编辑源代码的能力。所以我将运行:
^{pr2}$这正如预期的那样工作,并创造了:
/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笔记本并用我的环境内核运行它时,我得到
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']
显然,我无法导入我的包,因为它不在路径中。在
但是,当我将内核更改为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']
我的包是可导入的。在
由于某些原因,这两个环境的路径是混淆的。你知道怎么解决这个问题吗?可以手动更改内核的路径吗?在
我希望Jupyter在这里做些事情,让环境的变化变得简单。为了得到正确的结果,我这样做了:
然后我确保我有正确的Python路径到我的env
^{pr2}$这给了我环境核心的位置。其中有一个.json设置文件,您可以编辑路径以更正Python、显示名和其他内容。在
在这之后,我可以在内核之间切换。在
相关问题 更多 >
编程相关推荐