LoginSignup
0
2

More than 5 years have passed since last update.

[python] pipで入れたコマンドを一括でアップデートする

Posted at

これまで使っていたパッケージが古いバージョンだったので一括でアップデートしようとしたのですが、

pip update

みたいなコマンドがなかったので、エイリアスを作りました。

便利になったかと言われたら微妙です笑

手順

$ pip install --upgrade pip
$ cd ~
$ mkdir .pip_update
$ cd .pip_update
$ sudo pip-chill --no-version > ./pip_list.txt
$ sudo chmod 701 pip_list.txt
$ cd ../
$ sudo chmod 701 .pip_update
$ sudo pip install --upgrade -r ~/.pip_update/pip_list.txt

これでやると、初めはエラーが出ました。

どういうエラーかというと、

Collecting pydelicious (from -r /Users/username/.pip_update/pip_list.txt (line 106))
  Downloading pydelicious-0.6.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/tmp/pip-build-_82vkdci/pydelicious/setup.py", line 11, in <module>
        import pydelicious
      File "/private/tmp/pip-build-_82vkdci/pydelicious/pydelicious/__init__.py", line 171
        raise DeliciousItemExistsError, params['url']
                                      ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/tmp/pip-build-_82vkdci/pydelicious/

このpydeliciousは以前、集合知プログラミングという本で勉強した時に入れたのですが、サポートが終わっているのかうまく行かなかったのを思い出したので、

$ pip uninstall pydelicious

でアンインストールしました。

Uninstalling pydelicious-0.6:
  /Users/username/anaconda/bin/dlcs
  /Users/username/anaconda/lib/python3.6/site-packages/pydelicious-0.6-py3.6.egg
Proceed (y/n)? y
  Successfully uninstalled pydelicious-0.6
Traceback (most recent call last):
  File "/Users/username/anaconda/bin/pip", line 6, in <module>
    sys.exit(pip.main())
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/__init__.py", line 249, in main
    return command.main(cmd_args)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/basecommand.py", line 252, in main
    pip_version_check(session)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/utils/outdated.py", line 102, in pip_version_check
    installed_version = get_installed_version("pip")
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/utils/__init__.py", line 838, in get_installed_version
    working_set = pkg_resources.WorkingSet()
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 644, in __init__
    self.add_entry(entry)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 700, in add_entry
    for dist in find_distributions(entry, True):
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1949, in find_eggs_in_zip
    if metadata.has_metadata('PKG-INFO'):
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1463, in has_metadata
    return self.egg_info and self._has(self._fn(self.egg_info, name))
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1823, in _has
    return zip_path in self.zipinfo or zip_path in self._index()
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1703, in zipinfo
    return self._zip_manifests.load(self.loader.archive)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1643, in load
    mtime = os.stat(path).st_mtime
FileNotFoundError: [Errno 2] No such file or directory: '/Users/username/anaconda/lib/python3.6/site-packages/pydelicious-0.6-py3.6.egg'

というエラーが出ましたが、とりあえず Successfully uninstalled pydelicious と書かれていたのでよしとして先に進みました。

インストールしたくないパッケージが出てきたので、 pip_list.txt を書き直します。

$ sudo pip-chill --no-version > ~/.pip_update/pip_list.txt

これで

$ pip install --upgrade -r ~/.pip_update/pip_list.txt

をすると、

Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 PyWavelets-0.5.2 alabaster-0.7.10 alembic-0.9.6 argcomplete-1.9.2 asn1crypto-0.23.0 astroid-1.5.3 astropy-2.0.2 awscli-1.11.178 babel-2.5.1 banal-0.2.1 bcrypt-3.1.4 bleach-2.1.1 bokeh-0.12.10 boto-2.48.0 boto3-1.4.7 botocore-1.7.36 bottleneck-1.2.1 cached-property-1.3.1 cffi-1.11.2 chardet-3.0.4 cloudpickle-0.4.1 contextlib2-0.5.5 cryptography-2.1.2 cython-0.27.2 dataset-1.0.3 decorator-4.1.2 dill-0.2.7.1 docutils-0.14 durationpy-0.5 entrypoints-0.2.3 flask-0.12.2 flask-cors-3.0.3 gevent-1.2.2 greenlet-0.4.12 h5py-2.7.1 hjson-3.0.0 html5lib-1.0b10 idna-2.6 ipykernel-4.6.1 ipython-6.2.1 ipython-genutils-0.2.0 ipywidgets-7.0.3 isodate-0.6.0 isort-4.2.15 jedi-0.11.0 jsonschema-2.6.0 jupyter-client-5.1.0 jupyter-console-5.2.0 jupyter-contrib-nbextensions-0.3.3 jupyter-core-4.3.0 jupyter-highlight-selected-word-0.1.0 jupyter-nbextensions-configurator-0.2.8 jupyterthemes-0.18.2 keras-2.0.8 lazy-object-proxy-1.3.1 llvmlite-0.20.0 lxml-4.1.0 markdown-2.6.9 matplotlib-2.1.0 mccabe-0.6.1 mistune-0.8 mpmath-1.0.0 nbconvert-5.3.1 nbformat-4.4.0 networkx-2.0 nltk-3.2.5 normality-0.5.0 notebook-5.2.0 numba-0.35.0 numexpr-2.6.4 numpy-1.13.3 numpydoc-0.7.0 openpyxl-2.4.9 pandas-0.20.3 pandocfilters-1.4.2 paramiko-2.3.1 parso-0.1.0 partd-0.3.8 pathlib2-2.3.0 pep8-1.7.1 pillow-4.3.0 ply-3.10 prompt-toolkit-1.0.15 protobuf-3.4.0 psutil-5.4.0 ptyprocess-0.5.2 py-1.4.34 pyasn1-0.3.7 pycparser-2.18 pyflakes-1.6.0 pygments-2.2.0 pylint-1.7.4 pyopenssl-17.3.0 pytest-3.2.3 pytimeparse-1.1.7 qtawesome-0.4.4 qtconsole-4.3.1 qtpy-1.3.1 redis-2.10.6 requests-2.18.4 rope-0.10.7 s3transfer-0.1.11 scikit-image-0.13.1 scikit-learn-0.19.1 scipy-1.0.0 selenium-3.6.0 sphinx-1.6.5 sphinxcontrib-websupport-1.0.1 spyder-3.2.4 sqlalchemy-1.1.14 sqlparse-0.2.4 statsmodels-0.8.0 stevedore-1.27.1 sympy-1.1.1 tables-3.4.2 tensorflow-1.3.0 tensorflow-tensorboard-0.1.8 testpath-0.3.1 tornado-4.5.2 tqdm-4.15.0 traitlets-4.3.2 troposphere-2.0.2 urllib3-1.22 virtualenvwrapper-4.8.2 wheel-0.30.0 widgetsnbextension-3.0.6 wrapt-1.10.11 xlrd-1.1.0 xlsxwriter-1.0.2 xlwings-0.11.4 xlwt-1.3.0 zappa-0.44.3

となり、うまくインストールできたようです。

しかしここでも2種類のエラーが出ており、

①setup.pyを実行している間に以下のようにでる

DEPRECATION: Uninstalling a distutils installed project (cython) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.

②pip.main()を実行しようとすると以下のエラーがでる

Traceback (most recent call last):
  File "/Users/username/anaconda/bin/pip", line 6, in <module>
    sys.exit(pip.main())
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/__init__.py", line 249, in main
    return command.main(cmd_args)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/basecommand.py", line 252, in main
    pip_version_check(session)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/utils/outdated.py", line 102, in pip_version_check
    installed_version = get_installed_version("pip")
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/utils/__init__.py", line 838, in get_installed_version
    working_set = pkg_resources.WorkingSet()
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 644, in __init__
    self.add_entry(entry)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 700, in add_entry
    for dist in find_distributions(entry, True):
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1949, in find_eggs_in_zip
    if metadata.has_metadata('PKG-INFO'):
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1463, in has_metadata
    return self.egg_info and self._has(self._fn(self.egg_info, name))
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1823, in _has
    return zip_path in self.zipinfo or zip_path in self._index()
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1703, in zipinfo
    return self._zip_manifests.load(self.loader.archive)
  File "/Users/username/anaconda/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 1643, in load
    mtime = os.stat(path).st_mtime
FileNotFoundError: [Errno 2] No such file or directory: '/Users/username/anaconda/lib/python3.6/site-packages/jupyter_highlight_selected_word-0.0.11-py3.6.egg'

これはなんなんだろう...

わかる方いたら教えてください。

エイリアスにする

次回から思い立ったらすぐにアップデートできるように .zshrc にエイリアスを作成します。
(僕はzshを使っているので、他のシェルを使っている人は .bashrc とかの設定ファイルに同じように追加してください。)

$ pip-pkg-update() { sudo pip install --upgrade -r ~/.pip_update/pip_list.txt }

これで次から

$ pip-pkg-update

でアップデートできます。

さっきのエラーはなんだったのか。。。バージョン管理って難しいですね。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2