1. ホーム
  2. python

[解決済み] ローカルにインストールされたPythonモジュールの一覧を取得するにはどうしたらいいですか?

2022-03-18 19:56:16

質問

私のPythonインストール(UNIXサーバー)にあるPythonモジュールのリストを取得したいのですが、どうすればいいですか?

インストールされているPythonモジュールの一覧を取得するにはどうすればよいですか?

どのように解決するのですか?

解決方法

pip > 10.0では使用しないでください。

を手に入れるための私の50セント。 pip freeze -のようなリストをPythonスクリプトから作成することができます。

import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
     for i in installed_packages])
print(installed_packages_list)

(長すぎる)ワンライナーとして。

sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])

与えること。

['behave==1.2.4', 'enum34==1.0', 'flask==0.10.1', 'itsdangerous==0.24', 
 'jinja2==2.7.2', 'jsonschema==2.3.0', 'markupsafe==0.23', 'nose==1.3.3', 
 'parse-type==0.3.4', 'parse==1.6.4', 'prettytable==0.7.2', 'requests==2.3.0',
 'six==1.6.1', 'vioozer-metadata==0.1', 'vioozer-users-server==0.1', 
 'werkzeug==0.9.4']

範囲

このソリューションは、システムスコープまたは仮想環境スコープに適用され、以下の方法でインストールされたパッケージが対象となります。 setuptools , pip と( 神隠し ) easy_install .

私の使用例

この呼び出しの結果をflaskサーバーに追加したので、このサーバーを http://example.com/exampleServer/environment サーバーのvirtualenvにインストールされているパッケージの一覧を取得することができます。これでデバッグが楽になる。

注意事項

このテクニックの奇妙な挙動に気づきました - Python インタープリターが setup.py ファイルによってインストールされたパッケージは表示されません。 setup.py .

再現するための手順

仮想環境の作成
$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $ 

でgitレポをクローンします。 setup.py
(test_env) $ git clone https://github.com/behave/behave.git
Cloning into 'behave'...
remote: Reusing existing pack: 4350, done.
remote: Total 4350 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4350/4350), 1.85 MiB | 418.00 KiB/s, done.
Resolving deltas: 100% (2388/2388), done.
Checking connectivity... done.

私たちはbehaveの setup.py/tmp/behave :

(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py

git repo から python パッケージをインストールします。
(test_env) $ cd /tmp/behave && pip install . 
running install
...
Installed /private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.egg
Finished processing dependencies for behave==1.2.5a1

から前述の解答を実行すると /tmp

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['behave==1.2.5a1', 'enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp'

から前述の解答を実行すると /tmp/behave

>>> import pip
>>> sorted(["%s==%s" % (i.key, i.version) for i in pip.get_installed_distributions()])
['enum34==1.0', 'parse-type==0.3.4', 'parse==1.6.4', 'six==1.6.1']
>>> import os
>>> os.getcwd()
'/private/tmp/behave'

behave==1.2.5a1 は、2つ目の例では、作業ディレクトリに behave 's setup.py ファイルを作成します。

ドキュメントにこの問題についての言及が見つかりませんでした。おそらく、この問題のためにバグを開くことになるでしょう。