9

サードパーティの Python パッケージをインストールするために、setuptools.setup() を使用する setup.py スクリプトを使用して一連のパッケージをインストールしました。インストール後、これらのパッケージは、あるマシンでは /usr/local/lib/python2.7/dist-packages の下にあり、別のマシンでは /usr/lib/python2.7/site-packages の下にあります。

ここで、サードパーティのパッケージがインストールされている場所を見つける Python スクリプトを書きたいと思います。どうやってやるの?

1) sys.prefix=sys.exec_prefix は両方のマシン "/usr" にあります。

2) Python 実行可能ファイルは、両方のマシンの /usr/bin/python にあります。

3) distutils.sysconfig.get_python_lib() は、一方のマシンでは /usr/lib/python2.7/dist-packages (「ローカル」がありません) であり、もう一方のマシンでは /usr/lib/python2.7/site-packages です。

4

5 に答える 5

14

パッケージが既にインストールされている場合は、それらをインポートして、その__file__プロパティを調べることができます。

>>> import mymodule
>>> print mymodule.__file__
'/path/to/mymodule.py'
于 2013-07-03T16:45:49.977 に答える
2

この問題の解決策がほぼ見つかりました。この質問この質問を参照したので、そこにある回答に感謝します。

最初に、インストールされているすべてのモジュールのリストをリストに取得する必要があります。この質問を使用して、この質問に対するソリューションの出力を取得します。

これで、インストールされているすべての python モジュールのリストができました。モジュールの名前として個々の要素を取得するには、リストの形式を確認してから、適切に形式を設定する必要があります。

次に、ここで説明されているように、名前からモジュールを文字列としてインポートできます。次に、アレハンドロがすでに言ったようmymodule.__file__に、パスが含まれています。

これは、機能するはずの 1 つのソリューションです。あまりエレガントではありませんが、私は Python よりも Google 検索が得意な Python 初心者です。


モジュールがどこにあるかを見つけるためのはるかに簡単な方法を見つけました。これは、OPが探していた「エレガントな」ソリューションかもしれません。

import sys
print sys.path

sysモジュール に関するPythonドキュメントsys.pathには含まれています

モジュールの検索パスを指定する文字列のリスト。環境変数 PYTHONPATH と、インストールに依存するデフォルトから初期化されます。

于 2013-07-03T17:17:58.527 に答える
0

これを行う簡単なコマンドラインの方法は次のとおりです。

% python3 -c "import sys; print(list(filter(lambda s: s.find('packages') > -1, sys.path)))"

これにより、python3 のすべてのパッケージ フォルダーが一覧表示されます。例えば:

['/home/toor/.local/lib/python3.7/site-packages', '/home/toor/.pyenv/versions/3.7.9/lib/python3.7/site-packages']

または実行可能パスを探している場合:

% python3 -c "import sys; print(sys.executable)"

出力:

% /home/toor/.pyenv/versions/3.7.9/bin/python3
于 2021-08-19T23:48:25.853 に答える