問題タブ [python-importlib]
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.
python - 安全でないPythonモジュールをタイムアウトで動的にインポートする方法は?
テスト目的で、安全でない可能性のあるいくつかのモジュールを動的にロードする必要があります。
セキュリティに関して、私のスクリプトはアクセス権の低いユーザーによって実行されます。
ただし、モジュール スクリプトが終了する保証がないため、インポート プロセスをエレガントにタイムアウトさせる方法が必要です。input
たとえば、への呼び出しや無限ループを含めることができます。
私は現在 を使用Thread.join
してtimeout
いますが、スクリプトはバックグラウンドでまだ生きており、スレッドを強制終了する方法がないため、これで問題が完全に解決されるわけではありません。
モジュールをインポートしてNone
、スクリプトがタイムアウトした場合に戻すにはどうすればよいですか?
python - imp.load_sourceを使用せずにファイルから__version__値を取得しますか?
バージョン文字列を取得するために、以前に次のことを行いました。
が Python 3 で非推奨になったときimp
(私は 3.7.1 を使用しています) load_source
、std ライブラリだけを必要とする適切な代替手段は何でしょうか?
これは私には少し複雑に思えますload_module
が、実際には非推奨です:
編集#1:
これについては、任意の Python ソース ファイルのインポートで説明されています。(Python 3.3+)そしてそこに出てきた解決策の1つは次のとおりです。
python - Python フラスコ アプリケーションは、開始 ImportError 時に次のエラーをスローします: ファイル名によるインポートはサポートされていません
すべての要件をインストールし、アプリを起動した後、git からフラスコ アプリケーションのクローンを作成しました。
$ python start.py
次のエラーが表示されます
Start.py には次のコードがあります
上記のエラーで言及されている66行目のinit .py内には、次のようなものがあります
ここにアプリケーション構造があります
私の api\app\helpers\module_import.py には次のコードがあります:
私のapi\app\api_1_0__init__.pyには次のコードがあります:78行目