使用memory_profiler时无法导入模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用memory_profiler时无法导入模块相关的知识,希望对你有一定的参考价值。

我正在尝试使用memory_profiler,但是遇到了example.py中孤立的问题:

#! /usr/bin/env python 
import argparse

def parse_args():
    parser = argparse.ArgumentParser(description='Dummy description')
    parser.add_argument('--option',  action='store_true')
    return parser.parse_args() 

if __name__ == '__main__':
    parse_args()

所以基本上只使用argparse。独立运行良好(我有Python3.3)。但是,当我发出

$ python -m memory_profiler example.py

我得到一个错误:

NameError: global name 'argparse' is not defined

此外,如果我把它放在电话里

    parser = argparse.ArgumentParser(description='Dummy description')

下方

    if __name__ == '__main__':

并且我注释掉对parse_args()的函数调用,然后我没有收到错误。

有人知道这里出了什么问题吗?

答案

根据我的经验,内存分析器未在其PYTHONPATH中使用当前目录,所以我的解决方法是使用以下命令:

PYTHONPATH=./<CORRECT_PATH> python -m memory_profiler example.py

以上是关于使用memory_profiler时无法导入模块的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 -m 标志运行多个模块吗?

如何使用 Python 多处理和 memory_profiler 分析多个子进程?

导入“uuid”时无法在模块外使用导入语句 [重复]

无法导入 xlrd 模块

使用 memory_profiler 在 Flask 应用程序中分析行

Node.js:语法错误:无法在模块外使用 import 语句