対応するコード要素がインポートされるたびに生成され、対応するコードファイルが更新されている場合は更新される.pycファイル。.pycファイルを削除すると、自動的に再生成されます。ただし、ません対応するコードファイルが削除され自動的には削除され。
これは、ファイルレベルのリファクタリング中にいくつかの本当に楽しいバグを引き起こす可能性があります。
まず、自分のマシンでのみ機能し、他の人では機能しないコードをプッシュすることになります。削除したファイルへの参照がぶら下がっている場合、.pycファイルはインポートで使用できるため、関連する.pycファイルを手動で削除しない限り、これらはローカルで機能します。これは、適切に構成されたバージョン管理システムが.pyファイルを中央リポジトリにプッシュするだけで、.pycファイルはプッシュしないという事実と相まって、コードは「インポートテスト」に合格でき(すべてのインポートが正常に実行されます)、問題なく成功します。他人のコンピュータで作業する。
次に、パッケージをモジュールに変換すると、かなりひどいバグが発生する可能性があります。パッケージ(__init__.py
ファイルのあるフォルダー)をモジュール(.pyファイル)に変換すると、そのパッケージを表す.pycファイルが残ります。特に、__init__.pyc
遺跡。したがって、重要ではないコードを含むパッケージfooがある場合は、後でそのパッケージを削除し、いくつかの関数def bar(): pass
を含むファイルfoo.pyを作成して実行します。
from foo import bar
あなたが得る:
ImportError: cannot import name bar
Pythonはまだfooパッケージの古い.pycファイルを使用しているため、どれもbarを定義していません。これは、.pycファイルが原因で完全に機能するコードが破損する可能性があるWebサーバーで特に問題になる可能性があります。
これらの両方の理由(および場合によってはその他の理由)の結果として、次のbashの行のように、デプロイメントコードとテストコードで.pycファイルを削除する必要があります。
find . -name '*.pyc' -delete
また、Python 2.6以降では、Pythonを -B
.pycファイルを使用しないようにフラグを設定ます。.pycファイルを回避する方法を参照してください。詳細については。
参照:プロジェクトからすべての.pycファイルを削除するにはどうすればよいですか?
rm *.pyc
。ネストされたフォルダ内の.pycファイルは削除されません。find . -name '*.pyc' -delete
代わりに使用