Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-子模块加载检测_Python_Python 2.7_Python Import_Python Module - Fatal编程技术网

Python-子模块加载检测

Python-子模块加载检测,python,python-2.7,python-import,python-module,Python,Python 2.7,Python Import,Python Module,我目前正在开发一个库,它可以在加载时修补其他几个模块。它通常工作正常,但是在某些情况下,当要修补的函数包含在需要显式加载的子模块中时,它会遇到问题。例如,在scikits学习中,子模块数据集具有以下行为: >>> import sklearn >>> dir(sklearn) ['__SKLEARN_SETUP__', '__all__', '__builtins__', '__check_build', '__doc__', '__file__', '__n

我目前正在开发一个库,它可以在加载时修补其他几个模块。它通常工作正常,但是在某些情况下,当要修补的函数包含在需要显式加载的子模块中时,它会遇到问题。例如,在
scikits学习
中,子模块
数据集
具有以下行为:

>>> import sklearn
>>> dir(sklearn)
['__SKLEARN_SETUP__', '__all__', '__builtins__', '__check_build', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'base', 'clone', 'externals', 're', 'setup_module', 'sys', 'utils', 'warnings']
它仅在数据集被明确加载时加载:

>>> from sklearn import datasets
>>> dir(sklearn)
['__SKLEARN_SETUP__', '__all__', '__builtins__', '__check_build', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', 'base', 'clone', 'datasets', 'externals', 'feature_extraction', 'preprocessing', 're', 'setup_module', 'sys', 'utils', 'warnings']

我如何检测数据集何时被明确导入,以便仅在加载此子模块时启动修补程序?

您正在使用自定义导入挂钩?@Mr_and_Mrs_D Nope-只是将修补对象插入
sys.meta_path
这就是我的意思-发布一些与以下相关的代码问题:以及包含函数的模块与问题相关的是-
patch\u函数
,应用于
patch
方法。实际插入是通过将特定的PatchSimple子类插入到
sys.meta_path
中来完成的,例如在“是”中,请用您的注释更新问题。永远不要像我在这里做的那样链接到分支链接到提交(在github UI中点击y)