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__'
答案 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 ”的文件。