CentOS8 / WSL : python関係

gccとか入っている前提

そもそも python2は死刑宣告がでていますし、CentOS8ではpython3.6とかが普通なのであまり気にしなくていいのですが…..

 

# wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
# tar xvJf Python-3.9.1.tar.xz
# cd Python-3.9.1
# ./configure --enable-optimizations
# make
# make install

 

事の発端は

# alternatives --config python

してみたりとかいろいろやっていた後でsite-packagesの localを消すつもりが

# cd /usr/local/lib/python3.6/site-packages/
# rm -rf /usr/lib/python3.6/site-packages

 

とかうっかりをやってしまって dnf (yum)が使えなくなったりしたのでなんとかしようとじたばたした途中の話。

vaultから libdnf, python-dnf , python-hawkey やら python-libdnfとかいろいろ拾ってきてもrpm -iでは復旧しないのでまずはpython自体を入れようと最新版をコンパイルしてみたり。

ただし、復旧させたのは関係しそうなrpmを

# rpm2cpio *rpm | coip -id

と戻して

# yum -y reinstall $(rpm -qa | grep python )

して戻すのが正解だったようで回り道だったのですが….やはり壊して必要に迫られるのが一番勉強になりますね。

 

Windows10のWSL側もついでにいじったのですがそちらはそもそもCentOSより新しいものが入っていて aptでpython-is-python3とかを入れたくらい。

$ python --version

Command 'python' not found, did you mean:

command 'python3' from deb python3
command 'python' from deb python-is-python3

$ python3 --version
Python 3.8.5

その他、

# python -c "import site; print (site.getsitepackages())"

ライブラリ関係の見方とかpython以前の所をいろいろ試せてよかったのかな。

そんなわけで最終形はCentOS側は

# python -c "import site; print (site.getsitepackages())"
['/usr/local/lib64/python3.6/site-packages', '/usr/local/lib/python3.6/site-packages', '/usr/lib64/python3.6/site-packages', '/usr/lib/python3.6/site-packages']
# python3 -c "import site; print (site.getsitepackages())"
['/usr/local/lib/python3.9/site-packages']

 

あれ? /root/.local/lib/python3.6/site-packages が見えてないなぁ。

WSLは

$ python -c "import site; print (site.getsitepackages())"
['/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.8/dist-packages']

 

となりました。近日中に社内のpython勉強会があるらしいので、環境は整ったので良しとしましょう。PYTHONPATHに追加したものは

# python -c "import sys; print(sys.path)"

で見れる様子。site.getsitepackageとsys.pathの使い分けどうなんだろ? sys.pathが最終的に使うものなのかな。流行り物はいろいろ面倒だなぁ。