2

質問:(デバッグモードのように)インタプリタがいつでも関与するファイルを体系的に調査するにはどうすればよいですか?

すべてが失敗すると、エラーメッセージが表示されます。私が求めているのは反対です。すべてが機能しますが、pynotifyのようなものがおそらくそれを追跡できると想像できるとしても、その使用法と比較してどれだけ冗長なゴミがあるのか​​わかりません。

コンテクスト:

私は、パッケージを機能させるために、午前中ずっと試行錯誤を繰り返してきました。関連するpythonパッケージを少なくとも3つのディレクトリにコピーし、ウィンドウsetx -m pathをジャンクでひどく台無しにしたと確信しています。今、私は依存関係を壊さずにそれをすべてクリーンアップする方法を考えています、そして実際にプロセスから学びます

これについて疑問に思っているのは私だけではないでしょう。才能のあるテスト開発者の中には、次のようなスクリプト/パッケージを作成している必要があります。

import everything from everywhere
check for all dependencies
E = list(errorMessages)
L = list_of_stuff_that_was_used
print L
print E

したがって、にないものが保存されている場合はL、それを削除できます。ただし、もちろん、アクセス可能なすべてのファイル(または少なくともアクティブに使用されているディレクトリ)を使い果たすには、プロービングを徹底する必要があります。

質問の内容:私はに何があるのか​​興味がありませんsys.path。これは些細なことです。

その他のコンテキスト:

The Hitchhikers Guide to Packagingから、この問題の将来が解決されていることを知っていますが、過去を調査していません。では、Python 2xxから3xxへの移行に伴い、この問題はますます重要になる必要がありますか?

4

1 に答える 1

3

Pythonの動的な性質により、これはほぼ不可能な作業になります。

たとえば、関数もインポートできます。すべてのモジュールですべてのコードを実行しますか?

そして、下位互換性テストがあります。pysqlite2存在しない場合はインポートし、Pythonの現在のバージョンに存在しないsqlite3場合はバックポートモジュールを使用します。プラットフォーム固有のモジュール(は、(同じコードですが名前が変更されます)または現在のプラットフォームによって異なります)、および全体-販売はメインモジュールにインポートされます(、、、、およびすべては、機能を提供するプラットフォームに応じてモジュールで使用できます)。collections.Counteros.pathposixpathntpathriscospathposixntos2ceriscosos

を使用するパッケージはsetuptools依存関係を宣言し、pkg_resourcesライブラリから検出できます。それはあなたが合理的に発見できるものの限界です。

于 2013-03-09T10:33:02.827 に答える