◆ 困る所多かった
  ◆ 思ったほど便利でも親切でもない

Windows

Python を実行するのは基本 Linux のみだったのですが Windows でのエディタを VSCode にすると静的解析やコードフォーマットのために Python のツールが必要になりました
基本は自動でいれてくれるみたいだったので Yes を押していたらエラーになってました

Windows に入れたのってもう数年までなので 古いバージョンなのも原因かもと新バージョンを入れました

インストールしたのに全然見当たらないのでショートカットをたどるとなんと

c:\program files (x86)\microsoft visual studio\shared\python36_64\

にいました

VisualStudio でも入ってたようです

c:\program files (x86)\microsoft visual studio\shared\python36_64\
c:\program files (x86)\microsoft visual studio\shared\python36_64\scripts\

この 2 箇所に PATH を通して 再度 VSCode でインストールしようとするとまたもエラーです

pip コマンドでインストールしてるようなので pip のアップデートをしてみようと

pip3 install -U pip

を実行してみてもエラーです
エラーメッセージによると program files 以下なのでアクセス権限の問題でインストールできないみたいです

対処方法をググってみてもこれと言ってでてきません
すごく ヒットしそうなエラー理由なんですけど

コマンドのヘルプをみてると --user を指定すれば ユーザフォルダにインストールできるようです

pip3 install -U pip --user

無事成功したのですが 今度は pip コマンドが動かなくなりました

インストール場所が

C:\Users\user\AppData\Roaming\Python\Python36\site-packages\

と別の場所なので PATH に記述した場所と違うからでした
なるほどー

PATH 修正しようかと思ったのですが VSCode で実行されたのを見ると python コマンドで -m pip を指定してます
そんな書き方できるんだ と

python -m pip install --version

を実行してみると PATH 指定なくても動きました
こっちのほうがいいですね

Linux

Linux でもパッケージを入れたくて install を実行したら

ipapython 4.6.3 requires python-ldap, which is not installed.

依存関係のエラーみたいです
ないなら入れてくれたらいいのですが よくあるパッケージマネージャみたいにインストールしてくれないみたいです

pip のパッケージのチェックができる check コマンドがあるみたいなのでやってみると

python3 -m pip check

でも同じメッセージでした
チェックはしてくれてもダメというだけで直してくれないみたいです
直すコマンドもあるのかと探しては見たものの見当たらなかったので 必要と言われてるパッケージを直接インストールしてみました

sudo python3 -m pip install -U python-ldap

インストール時にエラーが出て Python.h がないと言われたので python3-devel をインストールするとインストールが完了しました

これまでのエラーもこれが原因かと思ったのですが インストールされてませんといわれるだけで インストールしようとしてエラーが出たとは表示されませんでしたし ビルドのようなことを試す間もなくインストールされてないと出たので 試してすらなさそうです

必要と言われたパッケージを入れると pip check でもエラーが出なくなって 無事目的のパッケージをインストールできました

ローカルインストールはできないみたい

pip を使って気になったのがインストール場所です
npm や composer に当たるものだと思って使ってたのですが インストール場所はグローバルもしくはユーザ単位のグローバルだけです

カレントディレクトリにインストールされません
オプションにもそういうのはなさそうです
package.json 的なのも無いようです

調べてみると そういうことをするには virtualenv というのを使って Python の仮想環境を作ってその環境でのグローバルがプロジェクトのフォルダ みたいなことにするらしいです
pip 的にはその環境でのグローバルなインストールのみのようです

Python のイメージが

Python ってツール周りも もっと使いやすく親切なものって印象だったのですが 思ったより困ることが多めです (今回に限らず

ローカルへのインストールするかはツールの方針だとしても
Windows で標準インストール先は Program Files のどこかで そこに書き込みできないのは昔からのことなので デフォルトをユーザフォルダやユーザ共通の書き込み可能フォルダにするとか
依存関係に問題あって足りないパッケージがわかってるなら自動でインストールしてくれたりしてもいいと思うのですけど

Program Files にインストールした場合 拡張的なファイルはユーザフォルダに置くようにするツールは Win7 の頃からよくありますし 技術的な問題もなさそうです

依存関係は今回は足りないパッケージ一つでしたが 複数あると大変です
ネット調べてると 要求されてるパッケージ一覧を取得してそれらをインストールするスクリプト紹介してるページもあって そんな事しないとダメなの?って気分になりました

Python って昔からあるバージョンから大きく仕様が変わったアップデートもあって 最近は 3 がデフォルトになってきつつあって 機械学習とかの流行りでユーザも増えて VisualStudio でも使えるようになってたりと 良さそうな印象は多かったですが 特別良いとかそんなこともなく  良い部分もあれば悪い部分も多いし 分かりづらいエラーはあるし ググっても全く同じという解決作があるとも限らず 自分でどうこうすることできる力が必要な感じでした

そういえば Python のパッケージマネージャでなぜか良さそうなイメージがあります
dnf が原因でしょうか
便利だし親切だし変なエラーにあまり悩ませられないし なにより初めて (yum の頃) 使った時によくわからない状態で使っててもちゃんと動いてくれて 困らなかった覚えがあります
pip の場合は今回の通りいきなり苦労することばかりで第一印象が 使えないもの になりかけです