Python/Pandas/Flake8:在导入中运行代码以扩展数据帧-如何避免F401未使用的导入?

Python/Pandas/Flake8:在导入中运行代码以扩展数据帧-如何避免F401未使用的导入?,python,pandas,dataframe,flake8,Python,Pandas,Dataframe,Flake8,我已经编写了一个模块,使用文件my_pandas_addon.py以自定义扩展名扩展pandas.DataFrame: import pandas as pd # some more custom classes & functionality here (...) # and finally: @pd.api.extensions.register_dataframe_accessor("my_addon") class MyAddon(): def __

我已经编写了一个模块,使用文件my_pandas_addon.py以自定义扩展名扩展pandas.DataFrame:

import pandas as pd
# some more custom classes & functionality here (...)

# and finally:
@pd.api.extensions.register_dataframe_accessor("my_addon")
class MyAddon():
    def __init__(self, df):
        self._df = df

    def do_something(self):
        print("Working!")
在另一个文件中,我现在可以导入此模块并立即使用我的函数:

import pandas as pd
import my_pandas_addon  ## <---- HERE: F401 'my_pandas_addon' imported but unused


def foo(df):
    df.my_addon.do_something()  # <---- here I am using my addon
将熊猫作为pd导入

导入my_pandas_addon###
“只需将#noqa添加到import.Works,但这对我来说似乎有点奇怪。”
可能没有滥用
导入my_pandas_addon
的副作用那么奇怪:)更重要的是,删除decorator,然后调用
register_plugin()
在程序入口点中?(不在
my\u pandas\u addon.py
)或者,您可以有一个
\uuuu init\uuuuu.py
文件来为您进行所有注册。但是我的“程序入口点”在哪里?我不知道。最终,您需要在程序的一开始就知道您需要注册插件。在我所有的测试可执行文件中,可能存在于某个地方的所有程序都包含一个函数,该函数在某些子函数中使用了我的新插件。似乎不合理。此外,init在这里也不能解决任何问题(如何解决?)。最后,将df作为第一个参数的自由函数可能是一个有效的解决方法。因此,
myu-plugin(df.foo()
而不是
df.myu-plugin.foo()
。然而,这在笔记本电脑中并不是很好。
“只需在import.Works中添加#noqa,但这对我来说似乎有点奇怪。”
可能没有滥用
import my_pandas_addon
的副作用那么奇怪:)更严重的是,删除decorator,然后调用
register_plugin()
在程序入口点中?(不在
my\u pandas\u addon.py
)或者,您可以有一个
\uuuu init\uuuuu.py
文件来为您进行所有注册。但是我的“程序入口点”在哪里?我不知道。最终,您需要在程序的一开始就知道您需要注册插件。在我所有的测试可执行文件中,可能存在于某个地方的所有程序都包含一个函数,该函数在某些子函数中使用了我的新插件。似乎不合理。此外,init在这里也不能解决任何问题(如何解决?)。最后,将df作为第一个参数的自由函数可能是一个有效的解决方法。因此,
myu-plugin(df.foo()
而不是
df.myu-plugin.foo()
。然而,这在笔记本电脑中并不是很好。