Я хотел бы украсить модуль pandas.DataFrame.to_csv, но не хочу изменять код, который импортирует панд.main.py
import pandas
pandas.DataFrame.to_csv(DATAFLAME_INSTANCE)
добавить путь к питону, в котором я ставлю следующий __init__.py
export PYTHONPATH="/mylib"
/mylib/pandas/__init__.py
import sys
syspath = sys.path
# remove added lib path so that "import" imports original pandas
syspath_list = list(syspath)
syspath_list.remove("/mylib")
sys.path = tuple(syspath_list)
from pandas import *
from pandas import DataFrame as _DataFrame
# restore sys.path so that main.py read this __init__.py
sys.path = syspath
class DataFrame(_DataFrame):
def to_csv(self, *args, **kwargs):
print("decorated")
super(_DataFrame, self).to_csv(*args, **kwargs)
при выполнении main.py эта ошибка возникает
$ python main.py
(general) PC:sacred-test user$ python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import pandas
File "/mylib/pandas/__init__.py", line 8, in <module>
from pandas import DataFrame as _DataFrame
ImportError: cannot import name 'DataFrame'
В этом примере я хочу, чтобы main.py в конечном итоге создавал «украшенный» стандартный вывод, но я обнаружил, что не должен использовать @deco, хотя