2010-01-06 5 views
8
import itertools 
print itertools#ok 

코드가어디에 'itertools'파일

괜찮습니다하지만 난이 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__' 

답변

17
>>> import itertools 
>>> itertools.__file__ 
'/usr/lib64/python2.6/lib-dynload/itertools.so' 

파일명이 .so 끝나는 사실은 C (보다는 정상적인 파이썬 모듈)에 기록 된 확장 모듈의 수단. 소스 코드를보고 싶다면 파이썬 소스를 다운로드하고 Modules/itertoolsmodule.c을 조사하십시오 (브라우저에서 http://svn.python.org/view/python/trunk/Modules/itertoolsmodule.c?view=log로 볼 수도 있습니다).

편집 (아래 코멘트에 대한 답) : 그것은 또한 파이썬 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' 
+0

감사합니다, pitrou, 나는 당신이 python2에 맞다고 생각합니다.6, 파이썬 2.5에서 코드 실행 오류가 발생했습니다. '__file__'속성이 없습니다. – zjm1126

+0

파이썬 빌드 (버전, OS, 원점)는 무엇입니까? 아마도 모듈은 동적으로 컴파일되지 않고 정적으로 컴파일되었을 것입니다. 그러나'__file__'도 Python 2.5에서 작동합니다 : 위의 편집 된 답변을보십시오. 어쨌든 위의 대답은 옳다 : 모듈은 C로 작성되었고 소스 코드는 공식 파이썬 소스 트리에서 사용할 수있다. –

+0

안녕 Antoine P. 내 시스템은 windows_xp, 당신이 내게 오류가 실행 줄 코드, 나는 무슨 일이 일어날 지 모르겠다. – zjm1126

1

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

업데이 트를 시도 : 를 너의 것이 없기 때문에, 다른 사람은 수동 방식으로 간다. sys.path를 수행하십시오.

시스템에 따라 시스템의 검색 기능을 사용하여 찾으십시오. 내 리눅스 시스템에

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

OR, 단지 이름이 "itertools"와 파일에 대한 전체 시스템을 검색 할 수 있습니다.

+0

의 열거 인, 유형 6의 것을 그 반환 (없음, 'itertools', ('', '', 6)) – zjm1126

4

당신이 소스 파일을 찾고 있다면 (C에서, 물론) 예를 들어 온라인 here입니다.

2

Windows 사용자 (나는 Python 2.7.2, Win7x64, 기본 설치 프로그램 패키지를 실행 중이다.)는 __file__으로 전화를 걸어 왔는데, @ zjm1126이 언급했듯이, 나는 그 문제가 윈도우에 내장되어 있다고 의심된다. 꾸러미. 말을 골랐다면 exceptions? 다른 플랫폼 (예 : MacBook의 Python 2.6.1)에서 똑같은 동작을 보일 수 있습니다. Windows는 itertools와 같은 몇 가지 내장 함수를 가지고 있습니다.

이 같은 엄격하게 대답하지만 당신이에서오고 어디 당신에게 힌트를 줄 것이다 sys.modules을 구문 분석 할 수 있습니다 :

itertools가 내장 된 파이썬 실행 파일에서 지적
>>> import sys 
>>> sys.modules['itertools'] 

<module 'itertools' (built-in)> 

.

또한, imp.find_module 응답이 동일한 정보를 제공하고 있습니다 : 이상한 반환 튜플 사양입니다 (참조 : http://docs.python.org/2/library/imp.html#imp.find_module을) 당신을 말하고 모듈은 imp.C_BUILTIN

관련 문제