.pyc
にある別のフォルダーの場所にファイルを保存する Python を持つことは可能sys.path
ですか?
/code
foo.py
foo.pyc
bar.py
bar.pyc
に:
/code
foo.py
bar.py
/code_compiled
foo.pyc
bar.pyc
より整理されていると思うので、これが欲しいです。あなたが私に与えることができるどんな助けにも感謝します.
アップデート:
Python 3.8では-X pycache_prefix=PATH
、コマンドラインオプションを使用する.pyc
と、コードツリーではなく、指定されたディレクトリをルートとする並列ツリーにファイルを書き込むことができます。$PYTHONPYCACHEPREFIX
envvarクレジットを参照してください: @RobertT'の回答
キャッシュの場所はで報告されますsys.pycache_prefix
([Python 3.2以降]サブディレクトリNone
のデフォルトの場所を示します)。__pycache__
コンパイルされたPythonバイトコードのキャッシュをオフにするように設定すると、Pythonはソースモジュールのインポート時にファイル-B
を書き込もうとしません。envvarクレジット.pyc
を参照してください:@Maleevの回答$PYTHONDONTWRITEBYTECODE
古い[Python2]の答え:
PEP 304:バイトコードファイルの生成の制御があります。そのステータスはWithdrawn
であり、対応するパッチは拒否されました。したがって、それを直接行う方法はないかもしれません。
ソースコードが必要ない場合は、*.py
ファイルを削除するだけです。*.pyc
ファイルはそのまま使用することも、卵に詰めて使用することもできます。
バイトコード生成を完全に犠牲にしたい場合は、コマンド ライン フラグがあります。
python -B file_that_imports_others.py
IDE のビルド/実行設定に入れることができます
コードを卵として配布することは、コードを整理しておくための優れた方法です。必要なすべてのコードとメタデータを含む単一のファイルよりも整理されたものはありません。バイトコード コンパイラの動作方法を変更しても、混乱が生じるだけです。
これらの pyc ファイルの場所が気に入らない場合は、代わりに読み取り専用フォルダーから実行することもできます。Python は書き込みができないため、pyc ファイルは作成されません。あなたが受ける打撃は、変更したかどうかに関係なく、すべての python ファイルがロードされるとすぐに再コンパイルする必要があることです。つまり、起動時間が大幅に短縮されます。
同意しません。理由が間違っているか、少なくとも十分に定式化されていません。しかし、方向は有効です。コンパイル済みオブジェクトからソース コードを分離できるのには十分な理由があります。ここにそれらのいくつかがあります(すべて、私はある時点で遭遇しました):
これらすべての問題には回避策がありますが、ほとんどは解決策ではなく回避策です。これらのほとんどの場合の適切な解決策は、ソフトウェアがこれらの移行ファイルを保存および検索するための別の場所を受け入れることです。
バイトコードをマジック ディレクトリに構築できるようにする継続的な pep があります。
基本的に、すべての python ファイルは directory にコンパイルされます__pythoncache__
。
「もっと整理された方がいい気がする」 なぜ?どのように?何を達成しようとしていますか?
コンパイラ出力を保存するポイントは、モジュールがインポートされるときの読み込み時間を少し節約することです。なぜこれをより複雑にするのですか?.pyc が気に入らない場合は、「すべての .pyc を削除する」スクリプトを定期的に実行してください。
それらは必須ではありません。彼らは役に立ちます。なぜそのヘルプをオフにするのですか?
これは、結果のオブジェクトが不可欠な C、C++、または Java ではありません。これは、Python がたまたま使用する単なるキャッシュです。誤ってチェックインしてしまうことがないように、Subversion ではそれらを「無視」としてマークします。