9
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

4 に答える 4

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

ファイル名がで終わるという事実は、.soそれが(通常のPythonモジュールではなく)Cで記述された拡張モジュールであることを意味します。ソースコードを確認したい場合は、Pythonソースをダウンロードして調べてください(ブラウザのhttp://svn.python.org/view/python/trunk/Modules/itertoolsmodule.cModules/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'
于 2010-01-06T01:37:50.717 に答える
4

ソースファイル(もちろんC)を探している場合は、たとえばここからオンラインで入手できます。

于 2010-01-06T03:23:04.143 に答える
2

Windowsユーザー(Python 2.7.2、Win7x64、デフォルトのインストーラーパッケージを実行しています)の場合、__file__@ zjm1126が指摘しているように、への呼び出しは炎上します。問題itertoolsはWindowsパッケージに組み込まれていることだと思います。あなたが言うことを選んだなら、exceptions?別のプラットフォーム(たとえば、私のMacBookのPython 2.6.1)でも同じ動作が得られます。Windowsには、itertoolsのような組み込み機能がさらにいくつかあります。

それ自体は厳密には答えではありませんが、sys.modulesそれがどこから来ているのかについてのヒントを与える解析を行うことができます。

>>> import sys
>>> sys.modules['itertools']

<module 'itertools' (built-in)>

これは、Python実行可能ファイルに組み込まれているitertoolsを指します。

また、imp.find_moduleの応答は同じ情報を提供します。奇妙な戻りタプルは仕様によるものであり(http://docs.python.org/2/library/imp.html#imp.find_moduleを参照)、モジュールはタイプ6であり、これはimp.C_BUILTIN

于 2012-11-07T12:03:43.037 に答える
1

これを試して

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

更新: あなたはNoneなので、別の方法は手動で行います。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 」という名前のファイルを検索します。

于 2010-01-06T01:33:34.237 に答える