从父目录中的python模块导入子目录中的jupyter notebook文件

时间:2017-05-06 04:41:25

标签: python jupyter-notebook python-import python-module

我有这样的文件结构:

In [12]: df.pivot_table(values="Pop", index="County", columns="Year").stack(dropna=False)
Out[12]:
County  Year
12      1999    1.1
        2000    NaN
        2001    1.2
13      1999    1.0
        2000    1.1
        2001    NaN
dtype: float64

// Normal font [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"your-font" size:10.f], NSFontAttributeName, nil] forState:UIControlStateNormal]; //selected state [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"your-font bold" size:10.f], NSFontAttributeName, nil] forState:UIControlStateSelected]; 文件夹中的project_folder/ notebooks/ notebook01.ipynb notebook02.ipynb ... notebookXY.ipynb module01.py module02.py module03.py 个文件中,我想从.ipynbnotebook/导入类和函数。

我在这个question中找到了答案,可以在每个笔记本中使用以下代码行,并且每次都将这些行作为第一个单元格运行:

module01.py, module02.py

请问更好的方法吗?如果我在module03.py文件夹中有很多import os import sys module_path = os.path.abspath(os.path.join('..')) if module_path not in sys.path: sys.path.append(module_path) 个文件怎么办?我是否必须在每个文件夹的开头粘贴这些代码行?是否有更好,更简约或更清洁的方式?

2 个答案:

答案 0 :(得分:2)

尝试将project_folder添加到PYTHONPATH environment variable.这将允许您告诉python搜索该目录以进行导入。

您可以在用户配置文件设置或启动脚本中执行此操作 - 而不是在python中执行此操作。它是在python运行之前必须设置的东西。

答案 1 :(得分:2)

另一种解决方案是将所有Python模块(.py文件)移动到文件夹中,并使它们成为可安装的程序包。如果您将pip安装到当前环境中,则可以将该软件包导入该环境中的任何笔记本中,而与文件夹结构无关。

因此,根据您的情况,您可以:

project_folder/
  notebooks/
    notebook01.ipynb
    notebook02.ipynb
    ...
    notebookXY.ipynb
  my_package/
    __init__.py
    module01.py
    module02.py
    module03.py
  setup.py
  • __ init __。py 只能是一个空文件,并告诉Python“此文件夹中的所有内容都是软件包的一部分”
  • 有关 setup.py 中内容的说明,请参见here

基本的 setup.py 可以很简单:

import setuptools

setuptools.setup(
    name="my_package",
    version="0.0.1",
    description="A small example package",
    packages=setuptools.find_packages(),
    python_requires='>=3.7',
)

安装:

cd project_folder
pip install [-e] .

包含可选的-e标志将以“可编辑”模式安装 my_package ,这意味着将在文件中创建符号链接,而不是将文件复制到虚拟环境中是。

现在您可以在任何笔记本中进行

import my_package

from my_package.module01 import <some object>