0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

centos-sclo-rhのpythonでpoetry-virtualenv環境構築〜注意点

Last updated at Posted at 2020-05-21

経緯

vaexを使おうとして、OSデフォルトのPython2.7.5ではバグ?により使えず、
Python2.7.17をインストールしてプロジェクトを続行をしようとしたら軽くハマったのでメモ。

環境

CentOS 7.5.1804
Python2.7.17
Poetry 1.0.5
tcsh

インストール

pyenv等他のインストール方法も試したけど、他のマシンに環境構築するのも一番お手軽そうなsclo pythonを使うことにした。

sudo yum -y install centos-release-scl-rh
sudo yum -y install python27

本来ならここで、/opt/rh/python27/enableがインストールされるはずだが、何故かされない時がある。
その場合手書きするか、python36などをインストールしてenableをコピーして改変するか。
enableはbashで書かれているので、tcshに書き直す。

vim /opt/rh/python27/enable
#!/usr/bin/env tcsh

if ($?PATH) then
  setenv PATH /opt/rh/python27/root/usr/bin:${PATH}
else
  setenv PATH /opt/rh/python27/root/usr/bin
endif
if ($?LD_LIBRARY_PATH) then
  setenv LD_LIBRARY_PATH /opt/rh/python27/root/usr/lib64:${LD_LIBRARY_PATH}
else
  setenv LD_LIBRARY_PATH /opt/rh/python27/root/usr/lib64
endif

if ($?MANPATH) then
  setenv MANPATH /opt/rh/python27/root/usr/share/man:${MANPATH}
else
  setenv MANPATH /opt/rh/python27/root/usr/share/man
endif

if ($?PKG_CONFIG_PATH) then
  setenv PKG_CONFIG_PATH /opt/rh/python27/root/usr/lib64/pkgconfig:${PKG_CONFIG_PATH}
else
  setenv PKG_CONFIG_PATH /opt/rh/python27/root/usr/lib64/pkgconfig
endif

if ($?XDG_DATA_DIRS) then
  setenv XDG_DATA_DIRS /opt/rh/python27/root/usr/share:${XDG_DATA_DIRS}
else
  setenv XDG_DATA_DIRS /opt/rh/python27/root/usr/share
endif

有効化

tcshなので、他のシェルのようにscl enable python27 tcshは使えないので、直接enableをsourceし有効化。

$ python -V
Python 2.7.5

$ source /opt/rh/python27/enable
$ python -V
Python 2.7.17

ちゃんとバージョン変わっていればOK.

poetry環境作成

p
enableをsourceしたシェルでpoetry init
すでにOS Pythonでvirtualenvを作っていたら、一度環境を削除し、poetry install
これでSCLO Pythonで環境が作成される。

開発環境

ここまででターミナルから使う文には問題ないが、作成した環境のPythonをPyCharmから使おうとするとエラーが出て上手く行かなかった。
(エラーログ消失)

原因は、enableで設定した環境変数が、PyCharmからだと設定されていないからだった。
あまり綺麗ではないが、python2.7をシェルスクリプトにしてしまい、python実行時にenableをsourceすれば解決出来た。

cd `poetry env info --path`/bin
mv python2.7 python2.7_original

vim python2.7
python2.7
#!/usr/bin/env tcsh

source /opt/rh/python27/enable
`dirname $0`/python2.7_original $*
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?