VS Code で python のパスを追記

VS Code で python のパスを追記

vscode で自動補完されないため
最新版に更新したら
python そのものを読み込んでいない状態に
VSCodeでPython自作モジュールimport時のエラー(Unable to import )が消えない場合の対処方法
を参考に

python.autoComplete.extraPaths
を設定することにした

パスに関しては
VScodeの自動整形や自動補完の設定(Python)

を参考に

pip show tensorflow

の結果

Name: tensorflow
Version: 2.8.0
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: packages@tensorflow.org
License: Apache 2.0
Location: /home/snowpool/anaconda3/lib/python3.8/site-packages
Requires: absl-py, astunparse, flatbuffers, gast, google-pasta, grpcio, h5py, keras, keras-preprocessing, libclang, numpy, opt-einsum, protobuf, setuptools, six, tensorboard, tensorflow-io-gcs-filesystem, termcolor, tf-estimator-nightly, typing-extensions, wrapt
Required-by: 

から
/home/snowpool/anaconda3/lib/python3.8/site-packages
がパスであることを確認

VS Codeのsettings.jsonの開き方

を参考に

ctrl + ,
で設定画面を開き
右上のアイコンから

Open Setting (JSON)アイコンをクリック

settings.json
の
{
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    }
}

{
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    },
    "python.autoComplete.extraPaths": [
        "/home/snowpool/anaconda3/lib/python3.8/site-packages"
    ],
    "python.analysis.extraPaths": [
        "/home/snowpool/anaconda3/lib/python3.8/site-packages"
    ]
}

として保存

これで再度 vscode を立ち上げると
コード補完がされるようになる

ubuntu に opencv tensorflow2 のインストール

ubuntu に opencv tensorflow2 のインストール

Ubuntu に python の opencv をインストール

を参考に

python -m pip install --upgrade pip
pip install opencv-python
pip install opencv-contrib-python

でインストール

次に
TensorFlow 2 をインストールする

を参考に

pip install --upgrade pip
pip install tensorflow

でインストール

pip show tensorflow

でバージョンを確認したら

Name: tensorflow
Version: 2.8.0
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: packages@tensorflow.org
License: Apache 2.0
Location: /home/snowpool/anaconda3/lib/python3.8/site-packages
Requires: absl-py, astunparse, flatbuffers, gast, google-pasta, grpcio, h5py, keras, keras-preprocessing, libclang, numpy, opt-einsum, protobuf, setuptools, six, tensorboard, tensorflow-io-gcs-filesystem, termcolor, tf-estimator-nightly, typing-extensions, wrapt
Required-by: 

となった
UbuntuにTensorFlowをインストールする【機械学習システム公開のため】

によれば
avx 対応しているCPUでないとダメらしい

sudo lshw -class processor


CPUの確認ができるらしい

私の環境だと

  *-cpu                   
       詳細: CPU
       製品: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
       ベンダー: Intel Corp.
       物理ID: 3
       バス情報: cpu@0
       バージョン: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
       シリアル: To Be Filled By O.E.M.
       スロット: CPU 1
       サイズ: 1966MHz
       容量: 3800MHz
       幅: 64 bits
       クロック: 100MHz
       性能: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb ssbd ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_l1d cpufreq
       設定: cores=4 enabledcores=4 threads=8

となり
一応は問題なし
10年前くらいに購入したマシンだったけど
なんとか動くようだ

Vscode プラグイン

Vscode プラグイン

https://yurupro.cloud/767/
を参考に
Python 開発関連を入れる

プラグインの入れ方は
https://blog-and-destroy.com/21376
を参考に

indent-rainbow
でインデントの色分け

ZenKaku
で全角を色でわかるようにする

Python Indent
でpython の自動インデント

TabNine
で予測変換

Python Docstring Generator

関数やクラス用のコメントのフォーマットを自動作成

Pylance

設定で、python.analysis.typeCheckingModeをbasicまたはstrictに設定すると型チェックを利用できる

Auto Rename Tag

開始タグと終了タグの修正が連動するようになる

Highlight Matching Tag

開始と終了タグにアンダーラインが引かれる

M1 Mac 開発環境作成

M1 Mac 開発環境作成

Viscose インストール

Python 開発環境

Jupiter notebook

Git
を入れる

Udemy などを参考に入れていく

まず home-brew が必要
https://www.teamxeppet.com/macbook-m1-homebrew-install/
を参考にインストール

Command + スペース

Spotlight検索を開いて
ターミナルと入力し

ターミナルを開き

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

でインストール

インストール後にパスを通す必要があるので

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/snowpool/.zprofile
brew -v

でバージョンを確認

Homebrew 3.3.12

M1 Mac環境にPython3をインストールする方法

を参考に

pyenv

Python3 をインストール

brew install pyenv
pyenv -v

でバージョンが出ればok

次に使用しているシェルを確認

env | grep SHELL

を実行し

SHELL=/bin/zsh

となったら

~/.zshrc を編集することになる

シェルの違いについては
MacにPythonをインストールする3つの方法!それぞれの利点と手順を紹介

を参考に

最新版のVimをインストールする方法【Mac】
を参考に

brew install vim


Vim をインストール

次に pyenv のパスを設定

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pyenv install 3.8.12


Python3.8.12 をインストール

pyenv global 3.8.12 

で使用するpython のバージョンを指定

次に
Python – Jupyter NotebookをMac M1 搭載機にインストールする
を参考に

Pip3 で Jupiter notebook をインストールする

pip3 install --upgrade pip

で最初に pip をアップデートして最新にしておく

sudo -H pip3 install jupyter

でインストールしたけど

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

と最後にエラーが出た

pip3 install jupyter

を実行したら特にエラーは出なかった

とりあえずインストールはできたので

jupyter notebook

で起動

これで動作確認できたので
次に git のインストール

MacにGitをインストールする

を参考に
Git で画像を扱えるように

brew install git
brew install git-lfs

を実行する

次に google chrome
これは
普通に検索してダウンロードするだけでok

ラズパイ4のセットアップ

ラズパイ4のセットアップ

半導体不足のためほぼ手に入らない状態だったので
KSY でラズパイ4の教材セットのものを購入

すでにOSの書き込みはされているので
ディスプレイとキーボード、マウスなどを用意すれば
すぐに起動できる

今回は
bluetooth キーボードを使用したが
初期設定はマウスだけでもできる

パスワード入力などではキーボードが必要になる

今回は
Anker の bluetooth キーボードを使用したが
ペアリングや日本語入力で手間取った

ペアリングは
Fn + z キーの長押しで行い

日本語変換と英語の切り替えは
スペース + Control で行う

とりあえずインストールができたら端末を起動し

sudo raspi-config

を実行

Interfacing Options を Select

I2 SSH
をクリックし

はい
をクリック

これでSSHが有効になるので

ここから後は ubuntu から操作できる

なお

Warning: Permanently added '192.168.1.48' (ECDSA) to the list of known hosts.
Received disconnect from 192.168.1.48 port 22:2: Too many authentication failures
packet_write_wait: Connection to 192.168.1.48 port 22: Broken pipe

となったときには

 ssh -o IdentitiesOnly=yes pi@192.168.1.48

とすることで
接続できる

今回はUSBカメラを使用する

ロジクールLogicool C270n

次に公開鍵認証にするので
Ubuntu で ssh-keygenコマンドで作成

-t で暗号形式を rsa
-b で4096ビットに指定
なおデフォルトでは2048ビット

cd .ssh
ssh-keygen -t rsa -b 4096

で作成

Enter file in which to save the key (/home/snowpool/.ssh/id_rsa): 

となったらファイル名を入力

今回は raspi4
としておく

パスフレーズは省略するので

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 


Enter にすればパスフレーズなしとなる

次に公開鍵の登録

これは
ssh-copy-id コマンドを使う

なお接続するラズパイ4のIPは
Android ならFing で調べることが可能

 scp -o IdentitiesOnly=yes .ssh/raspi4.pub pi@192.168.1.48:/home/pi/

で作成したファイルをコピー

次に
ラズパイにログイン

cat raspi4.pub >> .ssh/authorized_keys
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys 
sudo apt install vim


vim をインストール

sudo vim /etc/ssh/sshd_config

で設定ファイルを開き

パスワード認証を禁止

PermitEmptyPasswords no
PasswordAuthentication no

AuthorizedKeyFile .ssh/authorized_keys

を設定

sudo /usr/sbin/sshd -t

で設定の確認

sudo /etc/init.d/ssh restart


ssh の再起動

これで

ssh pi@192.168.1.48

でログインが可能になる

次に opencv のインストール

sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y

でリポジトリ更新とアップデート
そして不要なパッケージの削除

次に opencv に必要なライブラリをインストール

sudo apt install -y libhdf5-103
sudo apt install -y libatlas-base-dev
sudo apt install -y libjasper-dev

しかし

sudo apt install -y libqt4-test

を実行したところ

E: パッケージ libqt4-test が見つかりません

となる

python : pip install OpenCVでRaspbianでこのエラーが発生するのはなぜですか?2021-12-27 06:48

によれば
Qt4はもうパッケージ化されていない
とのこと

このため
Linuxでdebパッケージをインストールする方法

を見ながら

wget http://ftp.de.debian.org/debian/pool/main/q/qt4-x11/libqt4-test_4.8.7+dfsg-18+deb10u1_arm64.deb
sudo dpkg -i libqt4-test_4.8.7+dfsg-18+deb10u1_arm64.deb

としたが

パッケージアーキテクチャ (arm64) がシステム (armhf) と一致しません
処理中にエラーが発生しました:

となるため

wget http://ftp.us.debian.org/debian/pool/main/q/qt4-x11/libqt4-test_4.8.7+dfsg-18+deb10u1_armhf.deb
sudo dpkg -i libqt4-test_4.8.7+dfsg-18+deb10u1_armhf.deb

としたが

dpkg: 依存関係の問題により libqt4-test:armhf の設定ができません:
 libqt4-test:armhf は以下に依存 (depends) します: libqtcore4 (= 4:4.8.7+dfsg-18+deb10u1) ...しかし:
  パッケージ libqtcore4 はまだインストールされていません。

dpkg: パッケージ libqt4-test:armhf の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
libc-bin (2.31-13+rpt2+rpi1+deb11u2) のトリガを処理しています ...
処理中にエラーが発生しました:
 libqt4-test:armhf

となってしまう

きにせずそのまま

sudo pip install opencv-python

としたら
インストールできた

sudo python3 -m pip install pip --upgrade


pip もアップデートしておく

次に仮想環境を構築するツール
virtualenv

virtualenvwrapper
をインストール

sudo pip3 install virtualenv

を実行すると
インストールは成功するが

WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

となる

意味は

警告:「root」ユーザーとしてpipを実行すると、権限が破損し、システムパッケージマネージャーとの動作が競合する可能性があります。代わりに仮想環境を使用することをお勧めします
とのこと

pip install virtualenvwrapper

でインストールすると

  WARNING: The script virtualenv-clone is installed in '/home/pi/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

とでてくる

これは
.bashrc へ設定追加が必要

virtualenvとvirtualenvwrapperを使う

を参考に

whichコマンドを使って、virtualenvwrapper.shの場所を探す

which virtualenvwrapper.sh

結果は

/home/pi/.local/bin/virtualenvwrapper.sh

だったので

vim .bashrc 

でファイルを開き
最終行に

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /home/pi/.local/bin/virtualenvwrapper.sh #ここはwhichコマンドの結果に変えてください。
fi

を追記

source .bashrc

で有効化

しかし
mkvirtualenv コマンドが見つからないので
再度設定を変更

Raspberry Pi で virtualenv のインストール

を参考に

追記部分の

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /home/pi/.local/bin/virtualenvwrapper.sh #ここはwhichコマンドの結果に変えてください。
fi

を削除し

代わりに

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /home/pi/.local/bin/virtualenvwrapper.sh

を追記

source のパスは

which virtualenvwrapper.sh

のものを使用

これで

source .bashrc 

を実行すると
mkvirtualenv コマンドが使えるようになる

このコマンドの詳細については
コマンドリファレンス

を参考に

WordPress 2 段階認証プラグイン Two-Factor

WordPress 2 段階認証プラグイン Two-Factor

新規プラグインで
Two Factor
で検索

インストール後に有効化

ユーザ > あなたのプロフィール

Time Based One-Time Password (TOTP)
をクリック

QRコードを
Android アプリの
Google認証システムで読み取り
認証コードを入力する

注意点としては
スペースをいれること

これでプロフィールを更新すると
次回からログインのときに2段階認証が有効化され
ログインID、パスワードのあとに
認証アプリで表示された6つの値を入力しないとログインできないようになる

Pandas の文字列型の数値を数値型に変換

Pandas の文字列型の数値を数値型に変換

import pandas as pd
import investpy
import altair as alt
import datetime

economic_data2 = investpy.economic_calendar(time_zone=None, time_filter='time_only', countries=['japan', 'united states'], from_date='01/01/2021', to_date='31/01/2021')


ISM =economic_data[economic_data['event'].str.contains('ISM Non-Manufacturing PMI')]

date2 =[]
for i in ISM['date']:
    new_date = datetime.datetime.strptime(i,"%d/%m/%Y").strftime("%Y-%m-%d")
    date2.append(new_date)

ISM['date']=ISM['date'].str.replace('/','-')
ISM['date'] = date2
ISM.fillna(0)

これで取得した経済指標のデータを計算できるように数値変換する

previous_score = ISM['actual'].tail(1)
previous_score

でみると

2598    64.0
Name: actual, dtype: object

となるが数値ではなくオブジェクトになっている

Pandasで欠損のある列の文字列型の数値を数値型に変換する
を参考に数値に変換する

文字列を数値にするには
padas.to_numeric() を使う

errors には
raise がデフォルトで例外が発生
ignore は例外を抑えるが何も変換せずにそのままのオブジェクトを返す
coerce は数値変換できるものだけ変換しあとはNaN にする

これを利用して

previous_score2 =pd.to_numeric(ISM['actual'],errors="coerce")
previous_score2.tail(1)

とすれば

2598    64.0
Name: actual, dtype: float64

となる

これで数値化できたので
計算もできるようになる

print(previous_score2.tail(1) -1)
print( 62 - previous_score2.tail(1))

とすると結果は

2598    63.0
Name: actual, dtype: float64
2598   -2.0
Name: actual, dtype: float64

となった

これで経済指標の結果と前回の予測値との差分を計算して表示できる

ubuntu で Chrome がフリーズする対処

ubuntu で Chrome がフリーズする対処

Ubuntu 19.10 でChromeがフリーズする場合の回避策

を参考に

google-chrome-stable --disable-gpu

で起動

[設定] > [詳細設定] > [システム] > [ハードウェアアクセラレーションが使用可能な場合は使用する] をオフ

次にタブを開いて

chrome://flags
へアクセス

[GPU rasterization]

[Disabled]にしてブラウザを再起動

newspaper3k で経済指標のニュースを取得(失敗)

newspaper3k で経済指標のニュースを取得(失敗)

ロイターの経済指標ニュースを取得する
https://jp.reuters.com/investing/news/economic

jupyter notebook

newspaper3 を
インストールするには

!pip install newspaper3k

でOK

次に
分かち書き用のライブラリ
tinysegmenter
をpipでインストール

jupyter notebook でインストールするには

!pip install tinysegmenter

まず
newspaper から article をインポート

import newspaper

次に
自然言語処理を利用し
記事のキーワードだけを抽出したり
サマリーを取得するため
自然言語処理ライブラリであるntlkをダウンロード

import nltk

でインポートして

nltk.download("punkt")

実行結果で True になればOK

次にURL設定

url = "https://jp.reuters.com/investing/news/economic"

ニュース取得のとき
build を使うことで複数ページの取得が可能
article だと単一記事になる

website = newspaper.build(url)

あとは article で一つ一つ取り出して自然言語処理していく

これは for で行う

サマリー表示のときに
記事と記事の時に改行をいれる

これは

end="\n\n"

をつければOK

これだとすごい大量の記事になるので
表示数を制限する

今回は9の記事表示にした

あと見やすくするために記事に連番をつける

i = 0
for article  in website.articles:
    article.download()
    article.parse()
    article.nlp()
    print("記事",str(i),":",article.title)
    print(article.url)
    print(article.summary, end="\n\n")
    
    if i > 9:
        break
    i = i+1

これで取得はできたけど
経済指標と関係ないニュースがほとんどになってしまう

https://jp.reuters.com/news/business
にしたけど
あまり変わらない

URLの指定が悪いのか
もしくはスクレイピングしたほうが早いかは微妙なところ

記事タイトルをみると
どっちを指定しても
トップニュースを取得してしまっている
https://jp.reuters.com/news/archive/economicNews?view=page&page=2&pageSize=10
としてみたけど結果が変わらないため
URLの指定の問題ではなく
取得する場所の問題になりそう

記事を取得しない原因については

, memoize_articles=False

をつけることで解決

【Python】newspaper3kで記事が取得できない時の対処法

を参考に

デフォルトは True になっているため
ローカルに記事を保存してしまう

newspaper3k でもやってるのはスクレイピングなので
サイトを解析してスクレイピングしたほうが効率的なのかもしれない

webページをPDFにする

webページをPDFにする

wkhtmltopdf
を使うとHTMLファイルをPDFにできる

これを python で使うライブラリが
pdfkit

この2つがあれば python をつかって
HTMLを PDF
に変換できる

インストールは pip を使う

pip install pdfkit 

でインストール

pdfkit のインポートは

import pdfkit

やることはスクレイピングと同じなので利用に注意

google のトップページをPDFにするなら

url ='https://www.google.com/'

PDFにするときにオプションをつけれる

options ={
    'page-size':'A4',
    'margin-top':'10',
    'margin-right':'10',
    'margin-left':'10',
    'margin-bottom':'10',
    'zoom':'1.0',
    'encoding':"UTF-8"
}

あとはPDF変換

pdfkit.from_url(url,'out.pdf',options=options)

エラーになるので調べたら
wkhtmltopdf
をインストール忘れていたので

これをインストールする

https://wkhtmltopdf.org/

Downloads をクリック

今回は ubuntu 16 なので
amd64 をクリック

ダウンロードして保存し

sudo dpkg -i wkhtmltox_0.12.6-1.xenial_amd64.deb 

を実行したが

wkhtmltox_0.12.6-1.xenial_amd64.deb を展開する準備をしています ...
wkhtmltox (1:0.12.6-1.xenial) を展開しています...
dpkg: 依存関係の問題により wkhtmltox の設定ができません:
 wkhtmltox は以下に依存 (depends) します: xfonts-75dpi ...しかし:
  パッケージ xfonts-75dpi はまだインストールされていません。

dpkg: パッケージ wkhtmltox の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
man-db (2.7.5-1) のトリガを処理しています ...
処理中にエラーが発生しました:
 wkhtmltox

となるため

sudo apt install xfonts-75dpi

でインストール後に

sudo dpkg -i wkhtmltox_0.12.6-1.xenial_amd64.deb 

で再度実行すると
インストールできた

pdfkit.from_url(url,'out.pdf',options=options)

でOK

すべてのwebページがレイアウトどおりPDFにできるわけではないので注意

サイトによっては
サイドバーがPDF化できていなかった