Pythonのパッケージ管理システムのpipでは、requirements.txt
に必要なパッケージを記述しておくことで、
pip install -r requirements.txt
で一括インストールpip uninstall -r requirements.txt
で一括アンインストール
ができます。
そんな中、pip uninstall -r requirements.txt
の動作を確認したのメモを残しておきます。
環境
- Windows10 x64
- Python 3.5.1 32bit
- pip 8.1.2
確認
依存パッケージやPython拡張モジュールのアンインストール
依存パッケージのあるFlaskと、Python拡張モジュールをビルドする必要のあるPyCryptoに依存しているPySNMPのアンインストールを確認します。
# virtualenv環境を作成 D:\Sandbox\pip_uninstall>virtualenv -p c:\python35-32\python.exe env ... Installing setuptools, pip, wheel...done. D:\Sandbox\pip_uninstall>env\Scripts\activate # インストール前の状態確認 (env) D:\Sandbox\pip_uninstall>pip list pip (8.1.2) setuptools (23.0.0) wheel (0.29.0) # 依存パッケージのあるFlaskをインストール (env) D:\Sandbox\pip_uninstall>pip install flask # 依存パッケージのPyScryptoでビルドが必要な、PySNMPをインストール (env) D:\Sandbox\pip_uninstall>pip install pysnmp # インストール後 (env) D:\Sandbox\pip_uninstall>pip list click (6.6) Flask (0.11.1) itsdangerous (0.24) Jinja2 (2.8) MarkupSafe (0.23) pip (8.1.2) ply (3.8) pyasn1 (0.1.9) pycrypto (2.6.1) pysmi (0.0.7) pysnmp (4.3.2) setuptools (23.0.0) Werkzeug (0.11.10) wheel (0.29.0) # requirements.txtファイルに書き出し (env) D:\Sandbox\pip_uninstall>pip freeze > requirements.txt # requirements.txtファイルの中身を確認 # インストール前にあった、pip, setuptools, wheelの記載なし (env) D:\Sandbox\pip_uninstall>type requirements.txt click==6.6 Flask==0.11.1 itsdangerous==0.24 Jinja2==2.8 MarkupSafe==0.23 ply==3.8 pyasn1==0.1.9 pycrypto==2.6.1 pysmi==0.0.7 pysnmp==4.3.2 Werkzeug==0.11.10 # アンインストール (env) D:\Sandbox\pip_uninstall>pip uninstall -r requirements.txt Uninstalling click-6.6: ... Proceed (y/n)? y Successfully uninstalled click-6.6 Uninstalling Flask-0.11.1: ... Proceed (y/n)? y ... # 以降、該当するパッケージについて、すべて "y" を入力 # 再度確認 # 記載のなかった、pip, setuptools, wheelだけが残った (env) D:\Sandbox\pip_uninstall>pip list pip (8.1.2) setuptools (23.0.0) wheel (0.29.0)
requirements.txtに記載されたパッケージは削除されています。
ローカルファイルからインストールしたパッケージのアンインストール
ローカルファイルpycrypto-2.6.1-cp35-none-win32.whl
のインストールとアンインストールを確認します。
# Flaskをインストール (env) D:\Sandbox\pip_uninstall>pip install flask # requirements.txtに書き出しと、ローカルにあるPyCryptoの追加 (env) D:\Sandbox\pip_uninstall>pip freeze > requirements.txt (env) D:\Sandbox\pip_uninstall>echo pycrypto-2.6.1-cp35-none-win32.whl >> requirements.txt # requirements.txtの確認 (env) D:\Sandbox\pip_uninstall>type requirements.txt click==6.6 Flask==0.11.1 itsdangerous==0.24 Jinja2==2.8 MarkupSafe==0.23 Werkzeug==0.11.10 pycrypto-2.6.1-cp35-none-win32.whl # PyCryptoはインストールされていない (env) D:\Sandbox\pip_uninstall>pip list click (6.6) Flask (0.11.1) itsdangerous (0.24) Jinja2 (2.8) MarkupSafe (0.23) pip (8.1.2) setuptools (23.0.0) Werkzeug (0.11.10) wheel (0.29.0) # PyCryptoのインストールと確認 (env) D:\Sandbox\pip_uninstall>pip install -r requirements.txt ... Successfully installed pycrypto-2.6.1 (env) D:\Sandbox\pip_uninstall>pip list click (6.6) Flask (0.11.1) itsdangerous (0.24) Jinja2 (2.8) MarkupSafe (0.23) pip (8.1.2) pycrypto (2.6.1) setuptools (23.0.0) Werkzeug (0.11.10) wheel (0.29.0) # requirements.txtを使ったアンインストール # "-y"オプションで、アンインストールの確認を省略 (env) D:\Sandbox\pip_uninstall>pip uninstall -r requirements.txt -y Uninstalling click-6.6: Successfully uninstalled click-6.6 Uninstalling Flask-0.11.1: Successfully uninstalled Flask-0.11.1 Uninstalling itsdangerous-0.24: Successfully uninstalled itsdangerous-0.24 Uninstalling Jinja2-2.8: Successfully uninstalled Jinja2-2.8 Uninstalling MarkupSafe-0.23: Successfully uninstalled MarkupSafe-0.23 Uninstalling Werkzeug-0.11.10: Successfully uninstalled Werkzeug-0.11.10 Uninstalling pycrypto-2.6.1: Successfully uninstalled pycrypto-2.6.1 # ローカルからインストールされたものもアンインストールされた (env) D:\Sandbox\pip_uninstall>pip list pip (8.1.2) setuptools (23.0.0) wheel (0.29.0)
こちらも、requirements.txtに記載されたパッケージは削除されました。