2016-10-26 3 views
2

スクリプト内の特定のライブラリのパスを調べる必要があります。python -find現在どのライブラリが実行されているか

私が使用してみました:

os.path.dirname(MODULE.__file__), 

を、それは属性のエラーを与える:

"type object 'MODULE' has no attribute '__file__'." 

は、特定のモジュールのパスを見つけるための他の方法はありますか?すべてのライブラリのリストを提供するので、私はsys.pathを使いたくありません。

+1

(MODULE._ file__)ではなく、(MODULE._ _file __)ではありません - エラーのためにアンダースコアの間にスペースを入れなければなりませんでした。 – user7073454

+0

私は '__file__'のスペースを削除するための編集を提出しました。 - コードを正しくフォーマットすると(インラインコードのバッククイック、コードブロックの4つのスペースインデント)、アンダースコアは正しく表示され、イタリック体/太字は発生しません。 – whrrgarbl

答えて

0

は、実は私のコードのようなものだった os.path.dirname(module.__file__) それは、「モジュール」は存在しないというエラーを与えました。 だから私はした: import moduleとその後 from <module> import blah それは働いた!

1

_ _にはMODULE.__file__のスペースがあります。好きそれを呼び出す:

>>> import os, operator 
>>> os.path.dirname(operator.__file__) # where MODULE is "operator" 
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4' 
0

アカウントにカレントディレクトリを取らずにコンポーネントに渡されたファイル名を分割しようとしている場合は、両方のdirname()basename()を使用することができます。現在のディレクトリも考慮する必要がある場合は、明示的に行う必要があります。

、絶対パスのDIRNAMEを取得

os.path.dirname(os.path.abspath(__file__)) 

注意を使用するには:ファイルの前にスペースを削除します。 モジュールは、Pythonにロードされたとき@paxdiablo hereの応答として、__file__は、その名に設定されています。それを他の関数と一緒に使って、ファイルがあるディレクトリを見つけることができます。

0

モジュールを調べていないようですが、typeオブジェクトです。あなたは試してみてください:

os.path.dirname(MODULE.__module__.__file__) 

警告

通常、モジュールが配置されている場所を見つけるために__file__属性を使用することができますが、docsに述べたように(あなたがビットまたはCtrlキーを下にスクロールする必要があります+ fと__file__を検索)、この属性は存在しません。

The __file__ attribute is not present for C modules that are statically linked into the interpreter; for extension modules loaded dynamically from a shared library, it is the pathname of the shared library file.

ただし、impモジュールを使用できます。実際にモジュールをインポートするときに実行される同じ検索を実行する関数find_moduleがあります。これは、このようなコードにつながる:

import imp 

data = imp.find_module("MODULE") 
# The path of the module is the second element of the tuple 
pathname = data[1] 
0

使用osモジュール

os.path.dirname(<module>.__file__) 

例:

>>> import os, requests 
>>> 
>>> requests.__file__ 
'/usr/lib/python2.7/site-packages/requests/__init__.pyc' 
>>> 
>>> os.path.dirname(requests.__file__) 
'/usr/lib/python2.7/site-packages/requests' 
>>> 
>>> os.path.abspath(requests.__file__) 
'/usr/lib/python2.7/site-packages/requests/__init__.pyc' 

os.path.dirnameは - ちょうど__init__.pycすなわちパスの最後のセグメントを削除する - 要するにプロジェクトルートを返します。私が使用してモジュールのパスを見つけようとした from <module> import blah

+0

私のようなものがあります:私がNaNの場所を検索する場合 が「ナンと呼ばれる何のモジュールがエラーを与えないだろう 「os.path.dirname(ナン.__ FILE__)」、 「numpyの輸入はNaNから」 を 方法!ナンの場所を見つけるには? – user7073454

関連する問題