首页 > 解决方案 > 在 Python 中导入多个包宏

问题描述

我的大多数 jupyter 笔记本通常以一长串要导入的常用包开始。例如,

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
...

有什么方法可以使用另一个 python 文件中定义的函数调用所有相同的包?

例如,我尝试将以下内容放入util.py

def import_usual_packages():
    import pandas as pd
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt

在主笔记本中:

import util
util.import_usual_packages()

所以最终效果是我仍然可以在不使用额外命名空间的情况下调用通常的包,例如

pd.DataFrame()

目前,这不适用于我上面的内容。例如pd没有定义。

编辑:它与其他询问如何执行from util import *. 我试图将导入语句放在实用程序 python 文件的函数中,而不仅仅是放在文件的顶部。我知道我可以简单地将 egimport pandas as pd放在 util 文件的顶部,然后从 运行util import *,但这不是我想要的。把它放在函数中给了我额外的控制权。例如,我可以在同一个 util 文件中调用 2 个不同的函数import_usual_packages()import_plotting_packages()调用不同的包组,这样在我的笔记本中我可以简单地调用

import_usual_packages()
import_plotting_packages()

而不是每次都有 10 多行调用相同的东西。这纯粹是为了个人使用,所以我不在乎其他人是否不了解发生了什么(事实上,在某些情况下这可能是一件好事)。

标签: pythonpython-3.xjupyter-notebook

解决方案


稍作修改,您的方法就可以工作。在util.py

def import_usual_packages():
    global pd, np    # Make the names pd & np global
    import pandas as pd
    import numpy as np

而在main.py

import utils

utils.import_usual_packages()

utils.pd.DataFrame()  # access via the utils namespace

不过,这绝对不是最干净的方法。


推荐阅读