我遇到的麻烦主要是因为我对 python 和 OSX 缺乏经验,并试图了解它是如何工作的。
最终目标是让这个模块运行: http: //pypi.python.org/pypi/memory_profiler,除了它永远找不到模块。
所以对于初学者来说,我做了easy_install,一切都安装得很好,据我所知:
easy_install -U memory_profiler # pip install -U memory_profiler
接下来我创建了一个 example.py 文件,只是为了让事情顺利进行:
@profile
def my_func():
return 2
if __name__ == '__main__':
my_func()
并尝试运行它,但收到此错误:
$ python example.py
Traceback (most recent call last):
File "example.py", line 2, in <module>
@profile
NameError: name 'profile' is not defined
这不是关于 memory_profiler 模块的问题,而是更多关于我做错了什么并且配置不正确?我将 OSX 10.8.2 与 Python 2.7 一起使用。
这就是我的“哪条蟒蛇”所说的:
/Library/Frameworks/Python.framework/Versions/Current/bin/python
由于它是一个符号链接,所以当我转到原始链接时,它位于:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
我感到困惑的是easy_install正确地将memory_profiler.py文件放在了这个文件夹中:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
我的理解是,当 python 运行时,它会检查 PYTHONPATH 和站点包中的模块。(??)
但是如果模块在 site-packages 文件夹中,为什么 example.py 不起作用?另外,如果 site-packages 文件夹中的模块应该是路径的一部分,我想我至少可以运行 memory_profiler.py 来查看它是否被 python 运行,但是得到了这个错误:
python memory_profiler.py
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python:
can't open file 'memory_profiler.py': [Errno 2] No such file or directory
这也让我感到困惑,因为它声明 python 位于:../2.7/Resources/Python.app/Contents/MacOS/Python,但我认为它应该是 ../2.7/bin/python,并且不应该它正在检查 ../2.7/lib/python2.7/site-packages 中的 memory_profiler.py 文件吗?
另外,为什么这两个文件夹都存在,有什么区别?
/System/Library/Frameworks/Python.framework
/Library/Frameworks/Python.framework
我错过了一大块拼图,所以任何指向正确方向的帮助将不胜感激。
更新:
我遗漏了:
from memory_profiler import profiler
可能是我的大部分白痴问题,但现在我收到了这个错误:
Traceback (most recent call last):
File "example.py", line 1, in <module>
from memory_profiler import profiler
ImportError: cannot import name profiler