'itertools'文件在哪里

时间:2010-01-06 01:29:14

标签: python itertools

import itertools
print itertools#ok

代码没问题

但我找不到itertools文件。

谁能告诉我'itertools文件'在哪里


我的代码是运行python2.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__'

4 个答案:

答案 0 :(得分:18)

>>> 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浏览器中查看它。)

编辑(作为对以下评论的回答):它也适用于Python 2.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'

答案 1 :(得分:4)

如果您正在寻找文件(当然是C语言),例如在线here

答案 2 :(得分:2)

对于Windows用户(我正在运行Python 2.7.2,Win7x64,默认安装程序包),对__file__的调用将熄火,因为@ zjm1126已经注意到,我怀疑问题是{{1}是一个内置在Windows包上。如果您选择了发言,itertools?你会在另一个平台上获得相同的行为(例如我的macbook上的Python 2.6.1) - Windows碰巧还有一些像itertools这样的内置函数。

这不是严格意义上的答案,但你可以解析exceptions,这会给你一个关于它来自何处的提示:

sys.modules

指向itertools内置到你的python可执行文件。

此外,imp.find_module响应提供了相同的信息:奇怪的返回元组是按规范(请参阅:http://docs.python.org/2/library/imp.html#imp.find_module)并告诉您模块是类型6,这是{{的枚举1}}

答案 3 :(得分:1)

试试这个

>>> import imp
>>> imp.find_module("itertools")

<强>更新 由于你的是无,另一个是通过手动方式。做一个sys.path

>>> import sys
>>> sys.path
['', '/usr/lib/python2.6/lib-dynload' ]

然后根据您的系统,使用您系统的搜索工具来查找它。在我的Linux系统上

$ find /usr/lib/python2.6/lib-dynload -type f -iname "*itertools*"
/usr/lib/python2.6/lib-dynload/itertoolsmodule.so

或者,只需在整个系统中搜索名为“ itertools ”的文件。