0

我试图通过使用检查来获取调用模块的名称。当我返回应该是模块字符串时,我得到了这个:

<module 'mymod.wrapper' from '/usr/local/lib/python2

我查看了文档,但看不到任何关于这可能是什么原因(我很累,所以我可能错过了)。

这是课程

import inspect


class Wrapper():


    def getView(self, view, database=False):

        module = self._getDatabase()
        print(module)

    def _getDatabase(self):

        # Get calling module
        frm = inspect.stack()[1]
        modWhole = str(inspect.getmodule(frm[0]))
        modSplit = modWhole.split('.')
        mod = modSplit[0] + '.' + modSplit[1]
        return mod

此外,非常感谢任何有关如何在未来重新协调和防止此问题的建议。谢谢。

4

2 回答 2

4

inspect.getmodule()返回模块对象本身,而不是其名称。

尝试更换

str(inspect.getmodule(frm[0]))

inspect.getmodule(frm[0]).__name__

另外,请记住,inspect.getmodule()可以返回None

于 2011-05-31T12:11:14.950 回答
1

您可以使用以下__name__属性:

>>> import xml
>>> xml.__name__
'xml'
>>> m = __import__('xml')
<module 'xml' from '/usr/lib/python2.7/xml/__init__.pyc'>
>>> m.__name__
'xml'
于 2011-05-31T12:14:50.133 回答