2017-10-13 5 views
0

私は、相対的なインポートが通常のパッケージでどのように機能するかを理解しようとしていましたが、私はPython 3.4.3フォルダを例にしていました。 \ Python34 \ Libの\ののimportlib(私はCで3.4をインストール:\ Python34)私はCで見つかったmachinery.pyと呼ばれるファイルで、私はこの行を見つけました:_impモジュールはPython 3.4にどこにありますか?

このモジュールが配置されている
import _imp 

?ちょうどそれについて興味がある。 C:\ Python34のWindowsラップトップでcmdの検索dir _imp.py /sを実行しようとしましたが、何も見つかりませんでした。野生の推測から、私はそれが低レベルのCライブラリであるかもしれないと思っていたので、dir _imp.lib /sで検索しようとしましたが、そこに何も得られませんでした。 help(_imp)として

+0

'_imp .__ file__'と表示されますか? –

+0

@ IgnacioVazquez-Abrams私はその属性について知らなかった。私はインタプリタでAttributeErrorを取得しました。 randomirは組み込みモジュールだと言った。それがこのエラーが現れる理由ですか? – DragonautX

+0

それはその例外の1つの原因、はいです。 –

答えて

1

は言う:

_imp - (非常に)低レベルインポート機械ビットのimportlibとIMPで使用されます。

それはビルトインモジュールです:

>>> _imp 
<module '_imp' (built-in)> 

とソースがPython/import.cで見つけることができます。

+0

それは面白いです。実際のcpythonソースを調べることは考えていませんでした。しかし、それは "組み込み"だと考えると意味があります。 Pythonは、このような組み込みモジュール用のPythonインストールで提供されている.libライブラリファイルの1つを探しますか?私のインストールでは、 'libs \ python3.lib'または' libs \ python34.lib'のいずれかに名前があります。 – DragonautX

+0

どのようにWindows上にあるのか分かりませんが、Linuxではこのモジュールは 'python3'バイナリにリンクされています。モジュールから特定の文字列を検索すると、 'extension_suffixes'のようにチェックすることができます。 – randomir

+0

Pythonを埋め込んだアプリケーションでは使用できないため、 'python3'バイナリの一部にはなりません。代わりに、 'libpython3.x.so.1.0'(または適切なプラットフォーム上の同等物)にそれがあることです。 –

関連する問題