LoginSignup
0
0

More than 1 year has passed since last update.

初学者がpyenvの仮想環境の管理に困った話

Last updated at Posted at 2021-11-27

 pyenvの扱いにハマったときのことを書き残します.マイナーな事例かもしれません.あと思い出しながら書いているので再現性は低いかも...

(蛇足ですが)はじめに

 pyenvはPythonのバージョンや仮想環境を管理できるツールです.local設定をすると作業ディレクトリに移動するだけで環境が切り替わってくれるので便利.
(公式リポジトリはこちら)

 自分はWSL2を使っているのでホームディレクトリにcloneしました.macの方はbrewでもインストールできます.

起こったこと

 普通に環境を作ってpip installして使っていたところ,あるとき突然モジュールがpip listには入っているのにimportできない...といった問題が発生しました.他の人に聞いても「それは謎」「ちゃんと使ってればそんなことにはならないはず(意訳)」と言われてしまいました.

 しょうがないのでpython -m pip installでだましだまし使っていましたが,このままではpyenvを使っている意味が薄れてしまうので,調査を進めてみます.

調査内容・顛末

 とりあえずpip showしてみると,なぜか~/.local以下にあることに.ここを探してみるとPythonやpipが入っていたので,アンインストール(削除).

 その後which pythonしてみると,これまた変なところ(確か/usr/bin直下)を指し示されました.よってこれも削除.

 終わったか...?とpipを試してみると,

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

というエラーに遭遇.調べるとこんな記事を見つけたので,この通りファイルを書き換え,念のためpyenvから入れ直して終了.

 無事環境ごとに入れるモジュールを区別するという,pyenv本来の使い方をできるようになりました.

まとめ・感想

 いろんなパスを辿りつつ手探りでなんとか解決できましたが,sudoで無理やりファイルを消してたりするので本当はあまり良くないのかも.余裕があるならUbuntuから入れ直した方が安全だと思います.

 Pythonはpyenv経由でしか入れてないはずですし,そもそも新調したてのマシンなのでどさくさに紛れてグローバルなところに入っていた...っていうのも考えにくく,原因は未だ不明です.ただ気を付けるべきこととしては,

  • 今いる仮想環境が何か常に意識する(これはプロンプト表示の変更で解決)
  • これから使うPythonやpipがどこに入っているか確認する

といったことが挙げられるでしょうか.仮想環境はちゃんと使い分けるから便利なのであって,前提となる部分を蔑ろにしてしまうのは良くないよね~という教訓を得ました.

0
0
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
0