問題タブ [runpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
34887 参照

python - Python IDLE: メインを実行しますか?

私はIDLEにいます:

モジュールをインポートした後:

mainIDLEから実際に呼び出すにはどうすればよいですか?

0 投票する
4 に答える
7442 参照

python - 相対インポートの悪夢、pep 366 はどのように機能しますか?

私はそのような「標準的なファイル構造」を持っています(読みやすくするために賢明な名前を付けています):

この構造では、たとえば、各パッケージに含まれるモジュールはhelpers、次のような相対インポートを介してユーティリティにアクセスすることができます。

__main__.pyプログラムは、次の方法でファイルを使用して「スクリプトとして」実行されます。

私がこれらの行に入れたPEP 366に従おうとしています:__main__.py

しかし、実行時:

どうしたの?相対インポートを処理して効果的に使用する正しい方法は何ですか?

現在のディレクトリを PYTHONPATH に追加しようとしましたが、何も変わりません。

0 投票する
4 に答える
7778 参照

python - スクリプトから別のPythonスクリプトを実行して、デバッグできるようにするにはどうすればよいですか?

現在を使用している別のPythonスクリプトを呼び出しているラッパーPythonスクリプトがありますos.system('python another.py some-params')

両方のスクリプトをデバッグできるようにする必要があります。使用するos.system()場合はデバッガーが失われるため、別のスクリプトを開始する代わりに、同じインタープリターを使用して2番目のスクリプトをロードすることは理にかなっています。

importを実行しないため、期待どおりにはなりません__main__

パラメータを見逃すためのexec()またはrunpyシームのような他のバリアント。argv

この問題に対してどのような解決策がありますか?

another.pyスクリプトを変更する必要のない解決策を探しています。sys.argvおそらく、これを実行する前に変更する必要があります。

0 投票する
0 に答える
420 参照

python - 大規模な企業環境で多くの python スクリプトを整理する

私たちはかなりの量の Python スクリプトを作成してきましたが、現在では、大まかに関連するスクリプトがほぼ 100 個含まれるディレクトリができています。明らかにこれを整理する時が来ましたが、問題があります。これらのスクリプトは相互に自由にインポートされます。コードの再利用は一般的には良いことですが、ディレクトリへの編成が非常に複雑になります。

当社の企業環境について知っておくべきことがいくつかあります。

  1. ユーザーの環境にアクセスできません。スクリプト自体で発生しない限り、PYTHONPATH の編集は無効です。
  2. ユーザーはインストールしません。システムは既にインストールされ、動作していると予想される ため、setup.py は、すべてのユーザーに対して 1 回実行できない限り、解決策にはなりません。

インポート ステートメントを編集し、マイナーなリファクタリングを行うことはまったく問題ありませんが、現在確認しているソリューションでは、すべてのコードを「ユーザーが実行可能なスクリプト」と「ライブラリ」の間で厳密に分割する必要があります。コードの。

誰かが同様の問題を解決しましたか?あなたはそれに満足していますか?

-- バック


同じ質問を述べる別の方法:

Googleコード検索を見ると、このようなコードが横行しています(下記)。みんなこれで満足?良い代替手段はありますか?

0 投票する
1 に答える
535 参照

python - runpy でクロージャはどのように機能しますか?

runpyモジュールを使用してロードされたファイルで定義されたメソッドを実行しようとすると、予期しない動作が発生します。メソッドは、そのメソッドの外部で定義された変数 (インポートされたモジュールを含む) を認識しません。これが私がやっている方法です:

test.py の期待される出力は次のようになります。

fn は re、x、y のクロージャを形成するためです。

ただし、代わりに次のようになります。

re は、通常のクロージャー動作である必要がありますが、 fn 内で定義されていないようです。x と y は、定義されているように見えますが、None に設定されているため、さらに奇妙です。

これはなぜですか? また、クロージャーは runpy でどのように機能しますか? fn が外部変数を「見る」ことができるような通常の動作を実現するにはどうすればよいですか?

0 投票する
1 に答える
8197 参照

python - Python runpy モジュールとは何ですか?

Pythonのモジュールの目的とrunpy、Python ユーザー コミュニティの日々の開発にどのように役立つのか疑問に思っていました。

runpy誰かがPythonのモジュールの必要性、使用法、利点を説明してもらえますか?

0 投票する
0 に答える
238 参照

python - ランタイム パッチ python モジュール

インポートを置き換えながらモジュールを実行する方法を探しています。run_patchedこれは、次の疑似コードで実装するのに欠けている魔法です。

単一のメソッドは、たとえば stating などの代入に置き換えることができることを知っているので、 のようなグローバルをいじってから、 でモジュールを実行ArgumentParser.parse_args = printしたくなりました。sys.modulesrunpy.run_module

残念ながら、戦略全体はマルチスレッドのシナリオで機能するはずです。したがって、変更は実行されたモジュールにのみ影響し、プログラムの他の部分は、パッチが適用されていないモジュールをそのまま使用し続けることができます。