2つのUbuntu 18.04.1 LTSシステムがあります。
注:両方のシステムのすべてのものはAPTを使用してインストールされています(fromdeb-packages) 。 pip
/pip3
、make install
、checkinstall
およびその他の同様のユーティリティは使用しませんでした。だから、それは絶対に話題です。 Ubuntuで、UbuntuはAPTを使用します。
最初のシステムには、次のpyc
-ファイルがあります。
/usr/lib/python2.7/dist-packages/gi/overrides/Dee.pyc
/usr/lib/python3/dist-packages/gi/overrides/__pycache__/Dee.cpython-36.pyc
/usr/lib/python2.7/dist-packages/gi/overrides/Unity.pyc
/usr/lib/python3/dist-packages/gi/overrides/__pycache__/Unity.cpython-36.pyc
2番目のシステムにはこれらのファイルがありません。
dpkg -S
でこれらのファイルのパッケージが見つかりません。しかし、スクリプト(*.py
)を見つけることができます。
私の知る限り、これらのファイルはgir1.2-dee-1.0
とgir1.2-unity-5.0
からのものです。
ただし、これらのパッケージを再インストールした後、*.pyc
ファイルは作成されません。
なにが問題ですか?
その場所で*.pyc
を取得する方法は?これらのファイルがなくてもシステムは正常に動作しますか?
私はAPTベースを待っています
APTとは関係がないため、しばらく時間がかかります;-)
なにが問題ですか?
なし。
それぞれの場所で* .pycを取得する方法は?
本当に必要な場合は、 py_compile を使用して手動で実行できます。 pythonコマンドラインから({pyfile.py}をコンパイルしたいものに置き換えます):
>>> import py_compile
>>> py_compile.compile('{pyfile.py}')
また、ディレクトリ内のすべてをコンパイルできるコマンドラインメソッドもあります...
python -m compileall .
ただし、実際にそうする必要はありません。これらは、マシンでソフトウェアを使用するときに作成されます。これが、APTとは関係がない理由でもあります。
これらのファイルがなくてもシステムは正常に動作しますか?
はい。
実際に起こること:モジュールがインポートされるか、ソースが変更されると、コンパイルされたコードを含む.pyc
ファイルが.py file
と同じディレクトリに作成されます。このファイルは、そのモジュールのコンパイル手順をスキップするために使用されます。実行時に数ミリ秒のシェービング(通常の使用では重要ではありませんが、1秒以内に同じスクリプトを1000回呼び出すWebサーバーを想像してください。これらのミリ秒は突然重要になります)。
.pyc
ファイルがどこにも表示されないことについて:
pythonがコンパイルできない場合があります。 1つの例は、コンパイルが保存される場所にファイルを作成することを許可されていない2番目のユーザーを使用する場合です。実行は停止せず、ソース(コンパイルされたバージョンではなく)を使用します(スクリプトの実行はインポートとは見なされません。これはモジュールに対してのみ行われます)。
*.pyc
ファイルには、Python bytecode が含まれます。それらは、対応する*.py
ファイルが初めて実行されるときに作成されます(対応する*.py
が変更された後の最初の実行で更新されます)。
マシンのPythonインタープリターは*.pyc
ファイルを作成でき、オンザフライで作成できるため、*.pyc
ファイルは_に含まれませんAPTリポジトリ。含まれている対応する*.py
ファイルからマシン上で生成されます。
その結果、より長い時間使用され、より多くのアプリケーションを実行しているマシンには、これらのファイルをクリーンアップしない限り、クリーンOSインストールよりも多くの*.pyc
ファイルが含まれる可能性があります。
こちらもご覧ください: