python3は、ソースコードをコンパイルしてpycファイルを生成します

python3 -mcompileall。 

このようにして、生成されたpycファイルはpyファイルと同じディレクトリではなくpyファイルと同じディレクトリの__pycache__ディレクトリに配置され、インタプリタバージョンはpycファイルの途中に挿入されます。ここではcpython-36として。

[root@master learning_log]# pwd
/root/learning_log
[root@master learning_log]# ls
db.sqlite3  learning_log  learning_logs  manage.py  users

[root@master learning_log]# python3 -m compileall .
Listing '.'...
Listing './.git'...
Listing './.git/branches'...
...

[root@master learning_log]# find . -name '__pycache__'
./learning_log/__pycache__
./learning_logs/migrations/__pycache__
./learning_logs/__pycache__
./users/migrations/__pycache__
./users/__pycache__
./__pycache__

[root@master learning_log]# find . -name '*.pyc'
./learning_log/__pycache__/__init__.cpython-36.pyc
./learning_log/__pycache__/settings.cpython-36.pyc
./learning_log/__pycache__/urls.cpython-36.pyc
./learning_log/__pycache__/wsgi.cpython-36.pyc
./learning_log/__pycache__/asgi.cpython-36.pyc
./learning_logs/migrations/__pycache__/0001_initial.cpython-36.pyc
./learning_logs/migrations/__pycache__/0002_entry.cpython-36.pyc
./learning_logs/migrations/__pycache__/__init__.cpython-36.pyc
./learning_logs/migrations/__pycache__/0003_topic_owner.cpython-36.pyc
...

[root@master learning_log]# find . -name '__pycache__' | xargs rm -rf

python3 -m compileall-b。 

このコマンドを使用してコンパイルおよびパッケージ化するのは、単純に実用的すぎます。

-bパラメータを追加すると、コンパイルされたpycファイルはpyファイルと同じディレクトリに配置されます。.pyソースコードファイルを削除すると、残りはコンパイルされたpycファイルになります。

[root@master learning_log]# python3 -m compileall -b .
Listing '.'...
Listing './.git'...
Listing './.git/branches'...
...

[root@master learning_log]# find . -name '*.pyc'
./learning_log/__init__.pyc
./learning_log/asgi.pyc
./learning_log/settings.pyc
./learning_log/urls.pyc
./learning_log/wsgi.pyc
...

[root@master learning_log]# find . -name '*.py' | xargs rm -f

[root@master ~]# tar -czvf learning_log.tar.gz learning_log/
learning_log/
learning_log/learning_log/
learning_log/learning_log/__init__.pyc
learning_log/learning_log/asgi.pyc
learning_log/learning_log/settings.pyc
learning_log/learning_log/urls.pyc
learning_log/learning_log/wsgi.pyc
...

[root@master ~]# ll learning_log.tar.gz 
-rw-r--r--. 1 root root 169853 Mar 20 15:09 learning_log.tar.gz

それほど多くのコマンドを入力したくない場合は、次のような単純なシェルスクリプトを作成できます。これも非常に便利です(実行可能アクセス許可を追加することを忘れないでください)

#!/usr/bin/env bash
python3 -m compileall -b $1
find $1 -name '*.py' | xargs rm -f
tar -czvf "$1.tar.gz" $1
[root@master ~]# ./test.sh learning_log
Listing './learning_log/'...
Listing './learning_log/.git'...
...

[root@master ~]# ll learning_log.tar.gz 
-rw-r--r--. 1 root root 171763 Mar 20 18:32 learning_log.tar.gz

 

おすすめ

転載: blog.csdn.net/TomorrowAndTuture/article/details/115024180