【Python】コンソールとJupyter Notebookで動きが違うなと思った時に読む記事

【Python】コンソールとJupyter Notebookで動きが違うなと思った時に読む記事

はじめに

コジマです。

先日コンソールとJupyter NotebookでPythonの挙動が違うという悩みにぶちあたりまして、
原因色々探ってやっと解決したので、その覚書です。

前提条件

OSはmacです。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.2
BuildVersion:   18C54

私のしくじり

anacondaを複数インストールしてしまっていて、
コンソールで実行されるPythonとJupyter Notebookで実行されるPythonが別物になってました。
恥ずかしい。。。

私のしくじりを例に挙げて確認方法と対処方法を書いていきます。

Pythonの場所を確認する

Jupyter Notebookはanacondaの中に入っているので、
どちらもインストールしたanacondaの中のpythonを実行していればよいですね。

コンソール

コマンドファイルの場所を知りたいときはwhichコマンドを使います。

$ which python3.6
/Users/hogeuser/anaconda3/bin/python3.6

こんな感じになります。
ちなみに自分は3.6と打つのがめんどくさいので、普段はpythonだけで実行できるようにエイリアス作ってます。

Jupyter Notebook

たぶんこれが簡単だと思います。
なんか適当なライブラリをインポートして__file__を使用して
実行パスを取得します。

import os
os.__file__

出力はこう

'/anaconda3/lib/python3.6/os.py'

私の場合はこんな感じでパスが違ってました。
どちらも絶対パスが同じanacondaに向いていなければなりません。
このようにどちらかトンチンカンなパスを示している場合はこう対処します。

Jupyter Notebookの環境を正としたいので、pythonの実行パスをJupyter Notebookの実行環境に合わせます。

対処方法

以下の2手順を踏んで対応しました。

1:.bash_profileの設定

~/.bash_profileはコンソールを開いた時に予め実行するコマンドを定義します。
今回は/anaconda3/bin/にパスを設定します。

以下のようにファイルを記述します。

export PATH="/anaconda3/bin:$PATH"

exportコマンドで環境変数PATHを定義します。
コマンドを実行する時にはこのPATHに指定されたパスの中を見にいきます。

macやLinuxの場合はPythonの2系が予め/usr/local/binあたりにありそうな気がしますが、
同じ名前の実行ファイルがある場合は先に定義した方が優先されます。

/anaconda3/binをはじめに定義することで、確実に/anaconda3内(使いたいパス)のPythonを実行できるようになります。
変更を適用するためにはコンソールを再起動してください。

2:いらんanacondaとはバイバイ

/Users/hogeuserの中にいたいらんanacondaに別れを告げます。
rmでごっそりいっちゃいます。

sudo rm -rf ~/anaconda3

管理者権限がいるのでsudoマストです。

~はホームフォルダ(/Users/hogeuser)です。
Windowsで言う所の%USERPROFILE%にあたります。

これでスッキリ。わずらわしいものがなくなりました。

さいごに

環境周りでしくじりたくないですよね。。
一気に疲れてしまいます。

同じしくじりをしてしまった方は助けになれば幸いです。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

もっと学びたい人はこちら

Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!

Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス

プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning

気になった人はぜひ見てみてくださいね!

以上、コジマでした。


Pythonカテゴリの最新記事