光のカナダ留学blog

30歳で会社を退職。現在カナダ留学中です。

Pythonのvenvモジュールで仮想環境を簡単構築

Pythonのvenvモジュールを用いた仮想環境構築手順です。仮想環境を用いることで、例えばPython2系とpython3系などを一つのコンピュータ上(MacOS等)に入れられるようになります。異なるバージョンのライブラリを使い分けたい場合等にも便利です(Python 3.6〜)。

下記コマンドでカレントディレクトリにmyenvという名前のディレクトリが作成されます(myenvはお好みの名前に変更してください)。 この名前(myenv)が仮想環境の名前となります。

python3 -m venv myenv

.コマンドで下記コマンドを実行すると、仮想環境に入ることができます。

. myenv/bin/activate

仮想環境に入ると、プロンプトの先頭に(myenv)と表示されるようになります。

(myenv)$

以上で終了です。仮想環境から抜けたい場合は、deactivateコマンドを打ちます。

(myenv)$ deactivate

以上の手順で仮想環境を簡単に導入することができます。必要なライブラリをインストールして環境を構築していきましょう。なお仮想環境下ではpythonコマンドでpython3を実行することが可能です。

【Scrapy】Syntaxエラーdef write(self, data, async=False)とその対処法

ScrapyでのSyntaxErrorとその対処法についてです。(Python3.7.0、Scrapy1.5.0)

ScrapyでSpiderファイルを実行しようとした際に下記エラーが発生。

f:id:hikaruryugaku:20180923090939p:plain

def write(self, data, async=False):
SyntaxError: invalid syntax

下記リンクによるとScrapy(のTwistedライブラリ)が現状Python3.7に対応していないことが問題のようで、下記リンクを参考に次のコマンドを実施。

@joshspivey async keyword is used in Twisted, not in Scrapy. @lopuhin worked with Twisted maintainers to fix it in Twisted, so Scrapy will work with Python 3.7 after Twisted release a new version with a fix. Also, we've worked around it in Scrapy itself, so that Scrapy works with the current Twisted release (disabling manhole), this will be available in a next Scrapy release.

引用:https://github.com/scrapy/scrapy/issues/3143#issuecomment-368559739

pip install git+https://github.com/scrapy/scrapy@master --no-dependencies --upgrade

エラー無く実行できるようになりました。なお本問題はScrapyの1.6では対応される予定のようです。

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド-

 

【レビュー】Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

前回に引き続き、機械学習本のレビューになります。今回紹介するのは、オライリー・ジャパンの「Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎」という本です。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

 

始めに読んでみた感想として、一度で全てを理解するのは難しいのは確かですが、その情報量から今後機械学習を進める上での参考書としてとても優れている本だと感じました。

本書で用いられているscikit-learnとは、機械学習分野において広く使われているオープンソースライブラリです。機械学習にあたってはデータの準備が一つの大きなハードルとなりますが、scikit-learnは様々なデータセットを提供してくれるので初学者でも簡単に機械学習に取り組むことができます。また様々な機械学習アルゴリズムが網羅的に含まれており、大学や産業界でも広く使われているライブラリになります。

それでは各章の内容について簡単に触れていきます。

  • 1章 はじめに
  • 2章 教師あり学習
  • 3章 教師なし学習と前処理
  • 4章 データの表現と特徴量エンジニアリング
  • 5章 モデルの評価と改良
  • 6章 アルゴリズムチェーンとパイプライン
  • 7章 テキストデータの処理
  • まとめ
続きを読む

Ubuntuでpip3コマンドが使えなくなった時の対処法

pip3を10.xへアップグレードした後に、pip3コマンドが使えなくなってしまったため、その原因と対処法を調べてみました(Ubuntu18.04を使用しています)。

原因

pip3 install --upgrade pip

でpip3をアップグレードすると下記のようにpip-10.0.1にアップグレードされます。

f:id:hikaruryugaku:20180708124202p:plain

しかしその後pip3(pip3 installなど)のコマンドを実行しようとするとcannot import name 'main'というエラーが発生します。

f:id:hikaruryugaku:20180708124538p:plain

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

下記リンクによると、上記アップデートでsystemのpipをアップデートして内部メソッドが書き換わったことにより、Ubuntu側で提供されているpip3コマンド(/usr/bin/)使えなくなってしまったことによる、と書かれています。

You must have inadvertently upgraded your system pip (probably through something like sudo pip install pip --upgrade)

pip 10.x adjusts where its internals are situated. The pip3 command you're seeing is one provided by your package maintainer (presumably debian based here?) and is not a file managed by pip.

引用:Python pip3 - cannot import name 'main' error after upgrading pip - Stack Overflow

対処法

上記説明は少し難しいのですが、これを解決する方法は調べた範囲では二通りあるようです。

一つはpip3コマンドの代わりに

python3 -m pip

を用いる方法。こちらはそのままの最新のpipを使用できます。

もしくは、もともとのpip3コマンドを使いたいという場合、pipを下記コマンドで一度アンインストールして

sudo python3 -m pip uninstall pip

その後、aptコマンドで再インストールする方法があります。

sudo apt install python3-pip

この場合、pip3コマンドは使えますが、バージョンはUbuntuのレポジトリにある最新版がインストールされます(下記の場合、pip 9.0.1)。

f:id:hikaruryugaku:20180708140218p:plain

最後に

Ubuntuでpip3コマンドが使えなくなった場合の原因と対処法について説明しました。お役に立ちましたら幸いです。

【機械学習】UbuntuならびにTensorFlowのインストール方法

機械学習用に、Macの仮想環境にUbuntu18.04 LTSを入れてTensorFlowの導入まで行ないました。結構時間がかかってしまったので、記録として一から流れを残しておきたいと思います(Windowsも同様の流れで実行できます)。

  • 1. Ubuntuのダウンロード
  • 2. VirtualBoxのインストール
  • 3. Virtual BoxでUbuntuの仮想マシンを作成
  • 4. TensorFlowのインストール
  • 最後に
続きを読む

Pythonでfailed to execute ['dot', '-Tpng', '-O', 'tmp'], make sure the Graphviz executables are on your systems' PATHと出た時の対処方法

Pythonのscikit-learn の決定木を勉強中に発生したエラー対処方法です(Python 3.5.2)。graphvizをimportしようとした所、下記エラーが発生。

ImportError: No module named 'graphviz'

そこで下記コードを実行してから再度importを試したところ、

pip install graphviz

今度は下記のようなエラーが発生。

ExecutableNotFound: failed to execute ['dot', '-Tpng', '-O', 'tmp'], make sure the Graphviz executables are on your systems' PATH

こちらによると、Pythonパッケージのほかにシステム側にもインストールしないといけないらしいです。CentOSを使っているので下記でインストール。

sudo yum install graphviz

Ubuntuの場合は、

sudo apt-get install graphviz

これでエラー無く使えるようになりました。

ImportError: libSM.so.6: cannot open shared object file: No such file or directoryが出た時の対処法

Pythonでimport cv2をした時に出たエラーの対処方法を書いておきます。(CentOS 6.9)

pip install opencv-python

上記でOpencvをインストール後、import cv2とすると下記のようなエラーが発生。

Traceback (most recent call last):
File "test.py", line 1, in <module>
import cv2
File "/home/vagrant/.pyenv/versions/3.5.2/lib/python3.5/site-packages/cv2/__init__.py", line 4, in <module>
from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
yum search libSM

でライブラリ一覧がでてきますが、その中から下記をインストールします。

yum install libSM.x86_64

無事にインストールが済むとエラーが発生しなくなっているはずです。

こちらを参考にさせて頂きました。
Jupyterでmatplotlibのインポートした時にImportErrorが出た時の対処法