Archive for the ‘Python’ Category

python-logo-master-v3-TM

pipでもpip3でもparamikoが入らなかった

環境は以下の通り
Raspberry Pi Zero

cat /etc/debian_version
#9.8

Command “python setup.py egg_info” failed with error code 1 in ...

というようなエラーが出ていた。
調べてみるとsetuptoolsをアップグレードするというような記事が出てきた。

それらをやってもだめだったため、githubからparamikoのソースコードを探し出し、cloneの後に直接インストールを試みた。
pipを介さずインストールするのは依存関係が壊れる可能性があるので、もちろんバックアップは取ってからのこと。

すると、libffiというライブラリが不足していてインストールに失敗していることがわかった。

そこで

pip3 install libffi

でlibffiをインストールしたあと

pip3 install paramiko

で無事paramikoのインストールができた。

neovimを使っていて、:HealthCheckを実行時、python3はOKなのにpython2はエラーが出ていた。
python3とpython2、どちらもOKじゃないと問題がないかはわからなかったが、とりあえずエラーが出ている状態というのは気持ちがいいものではないので解決した

環境:
os:Linux Ubuntu18.04LTS
python2:2.7.16
python3:3.7.2

このサーバーではpythonのバージョン管理にpyenvを使っている。

記事執筆時に新しいバージョンだったpython2とpython3を導入している
それぞれ環境のところに書いてあるpythonをpyenvを使ってインストールをした。

その後、~/.config/nvim/init.vimに下記の記述を追加


let g:python_host_prog = expand('~/.pyenv/versions/2.7.16/bin/python2')
let g:python3_host_prog = expand('~/.pyenv/versions/3.7.2/bin/python3')

これで:CheckHealthをするとエラーは消えた

バージョンを直で書くのはよくないとかいう声も聞こえてきそうだけれど、とりあえずはこれでよし

(本当の問題は別のプラグインがまともに動いてくれていなくて、これがpython2がうまく動かないことに起因しているのかを確かめたかったのです)

下記記事を参考にさせていただきました。ありがとうございます。

init.nvim にpython のpath を指定してneovim の起動速度を早くする - Qiita

python-logo-master-v3-TM

先日Linux上でPythonのプログラムを開発していた時にディレクトリの中の画像ファイル一覧を取得したいなあと思う事がありました。

ディレクトリの中にはテキストファイルや、csvファイルが同時に含まれていたのですが、画像ファイルの一覧だけをリスト化したいなあと。

という事でどうやって解決したのかをここに記して置こうと思います。

import commands
jpgList = []
jpgList =  commands.getoutput("ls targetPath | grep *.jpg").split("\n")

osモジュールのlistdir()メソッドとかでもディレクトリとファイルの参照が出来るようですが、使い慣れたbashの出力をそのままゲット出来るcommands.getoutput()メソッドの方が便利だなと私は感じました。

このメソッドに文字列を渡すとカレントディレクトリでシェルコマンドを実行、返り値を取得する事ができます。

次のsplit()メソッドがキモなのですが、lsの返り値は"\n"で区切られています。

適当なファイルのあるディレクトリ内で

ls > result.txt
less result.txt

とやってみれば改行がIFS(内部フィールド区切り文字 (Internal Field Separator))となっている事が分かると思います。

よって、split("\n")で改行によって分割、リスト化してあげればlsの返り値を簡単にリスト化する事が出来るというワケです。

読者諸兄におかれましては蛇足となりましょうが、 "| grep *.jpg" によってファイル末尾(拡張子)が".jpg"のファイル群のみをリストアップするようにする事でjpgファイルらのみをリスト化しております。