ようへいの日々精進XP

よかろうもん

pip install --target オプションがエラーになって泣きそうになったメモ

tl;dr

pip install -r requirements.txt --target . ってしたらエラーになって詰んでしまったのでメモ。

どうしたのか

エラー

ウオ...

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 335, in run
    prefix=options.prefix_path,
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 732, in install
    **kwargs
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 837, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 1039, in move_wheel_files
    isolated=self.isolated,
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 247, in move_wheel_files
    prefix=prefix,
  File "/usr/lib/python2.7/dist-packages/pip/locations.py", line 153, in distutils_scheme
    i.finalize_options()
  File "/usr/lib/python2.7/distutils/command/install.py", line 289, in finalize_options
    raise DistutilsOptionError("can't combine user with prefix, "
DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base

エラーメッセージで検索すると以下のような対処方法がヒットするが、何れも --targe オプション利用時の事例や対処方法ではなく...「これは困った」状態。

stackoverflow.com

--user オプションと --prefix オプションなんて使って無いけどなあと思いつつ。

対処

結局、以下のように対応。

stackoverflow.com

pip install --user --install-option="--install-purelib=/path/to/target_dir" -r requirements.txt

ドキュメント を確認すると --install-purelib は pure Python モジュールのインストール先を指定するオプションのようだ。

うーん

根本解決してない :desuyone: