python - 在 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 多行调用相同的东西。这纯粹是为了个人使用,所以我不在乎其他人是否不了解发生了什么(事实上,在某些情况下这可能是一件好事)。
解决方案
稍作修改,您的方法就可以工作。在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
不过,这绝对不是最干净的方法。
推荐阅读
- ssh - gitLab:证书问题,缺少 ssh 公钥
- android-studio - Android Studio GridLayout 不工作。在设计视图中显示完全灰色
- julia - 带有概率的向量/数组中的样本
- python - loss.backward() 如何批量工作?
- python - 分解信号的每个周期
- laravel - Laravel 7:setUp() 中的单元测试集默认请求标头
- visual-studio - 如何为 Razor 文件中的符号 (@) 关闭 Visual Studio 背景突出显示?
- google-sheets - 在没有服务帐户的情况下向 Gsuite API 进行身份验证
- html - 使用 Twing 转义 HTML 标签
- html - 如何在 Materialise CSS 中调整导航链接的高度和面积?