我在cython文件中添加了一个函数(用def
定义,因此应该公开从python导入),编译了该文件并安装了信封库,但是我无法导入它。我以前在此文件中定义的其他功能都正常工作。
我通过导航到目录,然后使用pip install -e .
命令来安装此软件包。这是一个ipython叙述,显示了我安装它后的情况:
In [1]: import mab.bandits
In [2]: dir(mab.bandits)
Out[2]:
['BANDIT_CHOICE_RULE_GREEDY',
'BANDIT_CHOICE_RULE_UCB',
'UPDATE_RULE_CONSTANT',
'UPDATE_RULE_MEAN',
'__builtins__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__pyx_unpickle_Enum',
'__spec__',
'__test__',
'make_stationary_bandits',
'non_stationary_bandit_maker',
'np',
'run_bandits']
In [3]: type(mab.bandits.run_bandits) # <- This def is imported ok!
Out[3]: builtin_function_or_method
In [4]: type(mab.bandits.run_gradient_bandit) # <- This def is not!
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-5021ae84cb9b> in <module>
----> 1 type(mab.bandits.run_gradient_bandit) # <- This def is not!
AttributeError: module 'mab.bandits' has no attribute 'run_gradient_bandit'
出于良好的考虑,我在文件中添加了另一行:
XX = 2
卸载,重新安装,然后尝试以相同的结果from mab.bandits import XX
ImportError
。
我已经重新启动内核,或在所有重新编译之间杀死了重新启动的ipython。
那么是什么原因导致这些功能没有出现在扩展模块中?重新编译或重新启动python内核时,是否有缓存无法清除?