2017-09-20 8 views
0

私はpythonパッケージを作成しています。これをデバッグするにはpdbを使います。私は、ファイルのいずれかにブレークポイントを設定しようとすると、私はエラーを取得する:pdb:sys.pathにないファイルにブレークポイントを設定します。

The specified object 'CaptureManager.frame' is not a function or was not found along sys.path 

私はそれをGoogleで検索し、解決策を見つけた:

はのsys.pathに私のファイルを含むディレクトリを追加し

sys.path.append(os.path.join(os.getcwd(),"project_cameo")) 

しかし、デバッグセッションを再開するたびに行う必要があるため、数回後には非常に迷惑になります。それを行う "スマートな"方法はありますか?

+0

モジュールに 'sys.path..'行を追加すると、自動的にロードされます – Vinny

+0

ok。私はそれを__init__.pyに入れました。これは以前よりももっとスマートですが、回避策のように見えます... –

+0

venpの 'pip install -e .'はどうですか? –

答えて

0

モジュールを使用するには、モジュールをロードする必要があります(場合によってはデバッグ)。 Pythonはsys.path変数を見てモジュールをロードします。ドキュメントから

sys.path: A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.

それは、PYTHONPATH環境変数から初期化されます。このenv変数にモジュールの代わりにパスを追加することができます。

または、上部にあるモジュールにsys.path.append(os.path.join(os.getcwd(),"project_cameo"))行を追加することができます。

+0

PYTHONPATHを変更してみましょう。デバッグのために私のソースコードを変更したくないのです。 –

+0

@scotthuangが助けてくれたら教えてください – Vinny

+0

はい。助けになる。私は結論として、これを行う方法は「ネイティブ」ではないと思っていますが、os.pathを変更することでそれを行うことができます。しかし、私はそれを行うことで通常の検索パスを台無しにする可能性があると私は思う。デバッグには問題ありませんが、それを行う際に覚えておく必要があります。 –

関連する問題