import itertools
print itertools#ok代码没问题
但我找不到迭代工具文件。
谁能告诉我“迭代工具文件”在哪里?
我的代码运行python2.5 2.5
import itertools
print itertools.__file__
Traceback (most recent call last):
File "D:\zjm_code\mysite\zjmbooks\a.py", line 5, in <module>
print itertools.__file__
AttributeError: 'module' object has no attribute '__file__'发布于 2010-01-06 01:37:50
>>> import itertools
>>> itertools.__file__
'/usr/lib64/python2.6/lib-dynload/itertools.so'文件名以.so结尾的事实意味着它是用C编写的扩展模块(而不是普通的Python模块)。如果您想查看源代码,请下载Python源代码并查看Modules/itertoolsmodule.c (您还可以在http://svn.python.org/view/python/trunk/Modules/itertoolsmodule.c?view=log的浏览器中查看它)。
编辑(作为对下面评论的答复):也适用于Python2.5:
Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import itertools
>>> itertools.__file__
'/usr/lib/python2.5/lib-dynload/itertools.so'发布于 2010-01-06 03:23:04
如果您正在寻找源文件(当然是在C中),那么它就是在线这里。
发布于 2012-11-07 12:03:43
对于windows用户(我正在运行Python2.7.2,Win7x64,默认安装程序包),对__file__的调用将如@ out 1126所指出的那样终止,我怀疑问题在于itertools是windows包的内置组件。如果你选择了say,exceptions?在另一个平台上(例如,我的macbook上的Python2.6.1),您会看到同样的行为-- Windows只是碰巧有一些类似迭代工具的内置程序。
严格地说,这不是一个答案,但您可以解析sys.modules,这将给您一个提示,说明它来自何处:
>>> import sys
>>> sys.modules['itertools']
<module 'itertools' (built-in)>它指向内置到python可执行文件的迭代工具。
另外,imp.find_module响应提供了相同的信息:奇怪的返回元组是由规范(请参阅:模块)指定的,并告诉您模块是6类型的,这是imp.C_BUILTIN的枚举。
https://stackoverflow.com/questions/2010413
复制相似问题