在Jupyter我没有加载我自己的小模块,但在python / bpython中一切都很好。输入时
import sys
print(sys.path)
我的模块的路径不会在Jupyter中显示,但在python / bpython中它仍然存在。
我正在使用:
最相似的问题是这个 Cannot import modules in jupyter notebook; wrong sys.path
如何配置Jupyter自动加载我的模块?
答案 0 :(得分:27)
以下是我在jupyter笔记本中的项目所做的事情,
import sys
sys.path.append("../") # go to parent dir
from customFunctions import *
然后,影响customFunctions.py
,
%load_ext autoreload
%autoreload 2
答案 1 :(得分:13)
Jupyter有自己的PATH变量JUPYTER_PATH。
将此行添加到.bashrc
文件中对我有用:
export JUPYTER_PATH=<directory_for_your_module>:$JUPYTER_PATH
答案 2 :(得分:4)
Jupyter基于ipython,永久解决方案可能正在改变ipython配置选项。
创建配置文件
$ ipython profile create
$ ipython locate
/Users/username/.ipython
编辑配置文件
$ cd /Users/username/.ipython
$ vi profile_default/ipython_config.py
以下行允许您将模块路径添加到sys.path
c.InteractiveShellApp.exec_lines = [
'import sys; sys.path.append("/path/to/your/module")'
]
在jupyter启动时,前一行将被执行
在这里您可以找到有关ipython config https://www.lucypark.kr/blog/2013/02/10/when-python-imports-and-ipython-does-not/
的更多详细信息答案 3 :(得分:0)
假设您的项目具有以下结构,并且您想在notebook.ipynb
中进行导入:
/app
/mypackage
mymodule.py
/notebooks
notebook.ipynb
如果您在没有任何virtualenv的docker容器中运行Jupyter,则可能有必要在项目文件夹中创建Jupyter(ipython)配置:
/app
/profile_default
ipython_config.py
ipython_config.py
的内容:
c.InteractiveShellApp.exec_lines = [
'import sys; sys.path.append("/app")'
]
打开笔记本并签出:
print(sys.path)
['','/usr/local/lib/python36.zip','/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/site-packages/IPython/extensions', '/root/.ipython','/ app']
现在您可以在笔记本中进行导入,而无需在单元格中附加任何sys.path
:
from mypackage.mymodule import myfunc
答案 4 :(得分:0)
经过验证的解决方案对我不起作用,因为我的笔记本不在我的 sys.path 中。然而,这有效;
import os,sys
sys.path.insert(1, os.path.join(os.getcwd() , '..'))
答案 5 :(得分:-1)
您可以使用绝对导入:
/root
/app
/config
config.py
/source
file.ipynb
# In the file.ipynb importing the config.py file
from root.app.config import config