如何import任意位置的文件:Jupyter Notebook环境变量设置

文件夹结构

  • work/
    • modules/
      • module.py
      • __init__.py
    • notebooks/
      • notebook.ipynb

问题

我想在notebook.ipynb文件里importmodules文件夹下module.py里面的一个函数function(),即:

# notebook.ipynb
from modules.module import function

会提示错误🙅

ModuleNotFoundError: No module named 'modules'

更近一步,我想直接importmodule.py,即

# notebook.ipynb
from module import function

则会提示错误

ModuleNotFoundError: No module named 'module'

解决方案

首先要明确的一点是,虽然都是Python文件,在*.ipynb文件里使用的Python核(iPython)有别于*.py文件使用的Python核(Python)。
其次需要明白,这出现以上问题的根本在于,work/work/modules/不在iPython的环境变量中。

环境变量在哪?

与其回答“什么是环境变量?”这个只要一搜就能有的问题,我更想聊聊在哪可以找到这个环境变量,更具体的说iPython的环境变量在哪。

# notebook.ipynb
import sys
sys.path

就能看到当前这个notebook使用中的环境变量,其中应该会包括:

  1. 当前notebook.ipynb所在文件路径
  2. 该notebook用的python的路径

我们希望把work/work/modules/加到这个sys.path这个列表中来。

添加新路径到环境变量

  1. 在任何位置的终端里,输入
    ipython profile create
    
    这会生成一个ipython_config.py文件
  2. 接着确认iPython所在位置
    ipython locate
    
    会返回其所在位置的路径,如/home/.ipython
  3. 编辑ipython_config.py文件
    vim /home/.ipython/profile_default/ipython_config.py
    
    c = get_config()下面添加一行
    c.InteractiveShellApp.exec_lines = [
    'import sys; sys.path+=["/work","/work/modules"]']
    
    然后按esc退出编辑,:wq保存并退出。
  4. 这个时候重启notebook.py,再输入:
    import sys
    sys.path
    
    就会显示刚才新添加的路径。从而在import module的时候不会再出现ModuleNotFoundErro的问题了。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值