トホホな疑問(3)PYTHONHOME、忘れてました

遅ればせながらも、Python3に移行しなければとようやく決意したのは、Raspberry Pi上で何度もpipを動かしていたためでした。何度も「警告」文が表示されるので、ああ、2020年になったら打ち切りだったのね、と認識を新たにいたしました。ギリギリになって慌てるのも嫌なのでいまから着手しておくかい、と思い至りました。私なんぞの使い方であれば、そんなに「ハマる」ところも無さそうだし。。。

※「トホホな疑問」投稿順Indexはこちら

まずは、移行を促す原典を引用させていただきましょう。

Moving to require Python 3

確かに、長年2.7系と3.x系が並び立ってきたのは、諸般の事情から致し方ないことだったのだと想像しますが、「Python業界」にとっては発展を阻害する要因に違いありません。皆で「談合」して(この件については公取も何も言わないだろうし)2020年からはPython3ね、と決めたのは立派な決定だと思います。

ともあれ、私も2.7系から3.7系(3.8へ行かないところがコンサバですが)へ移行を始めるにあたり、

  • 2.7系の環境は残す(2.7でないと動かないもの結構あるから)
  • 3.7系の環境も並置して、ずるすると移植(自動変換なるべく使わず、両対応化)

という方針で始めました。さて

1台目のWindowsパソコン

Python 3.7インストールしました。何の問題もなく、2.7と3.7併用できるようになりました。一応、こんがらがると困るので、2.7用のコマンドプロンプトと、3.7用のコマンドプロンプトのショートカットを作り、プロンプトの先頭にPython 2.7とか Python 3.7とかアクティブな方の名前が表示されるようにした上で、画面背景も2.7は黒、3.7は青とポカよけもいたしました。勿論、2.7環境と3.7環境で

  • Path
  • PYTHONPATH

はそれぞれ適切なところに向くように設定してあります。この調子で

2台目のWindowsパソコン

でも同じような(ま、用途が違うのでいろいろ違うところはあるのだけれど)、ことをすれば2.7と3.7併用できるよね、としたところで、どうしたことか。

  1. Python 3.7 自体、ちゃんと立ち上がる。
  2. 当然Pathも正しくPython 3.7側に向いており、2.7の方は見えなくなっている。
  3. 2.7系のファイルの置いてあるところも PYTHONPATH からは外れている

でもね、pip 起動しただけでエラーがでます。ちゃんとpipあるし、Path通っているのだけれど。エラーみると、どうもPython 2.7系のディレクトリを見に行ってなにかよからぬことになっている感じ。

インタラクティブにPython立ち上げ、sys.path 確認してみると、いました、大量のPython2.7系のディレクトリが含まれております。

これはなぜ?

一瞬、分けが分かりませんでしたです。それぞれの環境で必要な環境変数などはバッチファイルの中で更から定義するようにしていたので、被る筈ないのだけれどな。。。念のため、Windowsの環境変数を調べたら、

PYTHONHOME

という環境変数が定義されているではありませんか。といって定義したのは私にきまっています。もう遠い昔で覚えていないのですが、Python2.7をインストールしたときに、システム環境変数として、Python2.7のインストールディレクトリに向けて設定したようです。そんな環境変数あったっけ?忘却の彼方。これを除去したところ問題なく 3.7 (勿論2.7も)動きました。

3台目のWindowsパソコン

は、流石にインストールする前に、環境変数調べました。PYTHONHOMEは定義されていない。しかし、

PYTHONSTARTUP

なる環境変数が、ユーザー環境変数の中に隠れているではありませんか。最近でこそ、環境変数類は局所的に都度自動設定されるように心がけているのですが、結構、昔の名残があちこちに存在します。どうもインタラクティブに動作させるときのSTARTUP用のスクリプト呼び出すためのもののようでした。追いかけてみると、

べたなPython 2.7用のコード

でした。エラーになりそうなところをつぶしておしまい。まだ、何台かあるのだけれど。。。

トホホな疑問(2) ピンヘッダに泣く へ戻る

トホホな疑問(4) Raspberry Pi、Google Home Mini、音を出す小ネタ へ進む