Python3関連のことを調べてみた2022年01月07日

Python3関連のことを調べてみた2022年01月07日

DearPyGuiをはじめる10行

![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) スゴクよさそうなので最初のとっつきだけご紹介

#DearPyGuiとは?

https://github.com/hoffstadt/DearPyGui

DearPyGuiはpythonでグラフィカルなインターフェースを作るためのライブラリです。
DearImGuiというC++用のGUIフレームワークのpython版という位置づけのようです。
GPU対応のため動作も軽快で、アプリケーションやゲームも作れるそうです。
その素晴らしさはgithubを見れば一目瞭然です。

#インストール
Python 3.6 以上、64bitの環境で以下を実行します。

“`shel

元記事を表示

SeleniumとMeCabを使えるJupyterLabコンテナイメージを作る

# はじめに

この2~3か月くらい、筆者は仕事でデータ収集(BeautifulSoupやSeleniumを使ったWebスクレイピング)と自然言語処理(MeCabを使った形態素解析とgensim使った単語の分散表現と感情分析)をする機会が増えてます。

過去の記事([※1](https://qiita.com/Blaster36/items/6dce4cf0b4ada88ef639))では、WSL上でGPUの使える分析環境を整備したのですが、用途に合わせた環境がまだまだ整っておらずちょっと仕事関係のプログラミングには使えてませんでした。
Pythonライブラリはpipコマンドで(PyPI参照して)インストールも簡単なのですが、SeleniumやMeCabはpipコマンド以外のインストール作業があったりで正直大変。。。

というわけで、SeleniumとMeCabを使えるコンテナイメージをビルドして、分析環境で使えるようにしようと思い立ちました。
Webブラウザ(Google Chrome)のVerupが進むと、Selenium(ChromeDriver)との整合性が崩れて動かなくなった

元記事を表示

Raspberry Pi OSのインストールと設定

## Install Raspberry Pi OS
[RaspberryPi.com](https://www.raspberrypi.com/)にアクセスします。次に、[Software](https://www.raspberrypi.com/software/)のページにアクセスします。

そして、[Raspberry Pi Imager](https://downloads.raspberrypi.org/imager/imager_latest.exe)をインストールします。
Joy-ConでROS2の亀を動かす(ROS1からROS2へ移植)

# joycon_controller
こちらの[GitHub](https://github.com/Azicode/joycon_controller)に手順とソースをまとめてあります。
手早く動かしたい方は上のリンクを参照してください。
![VID_20220105_vertical_Trim.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556756/d751e586-c811-98d6-8741-dbe791133f54.gif)

## 本記事の内容
先に本題を書いておきます。
Joy-ConをROS2で使えるようにするにあたって、

– [1. ROS1からROS2へのPythonスクリプトの書き換え](#1-ros1からros2へのpythonスクリプトの書き換え)
– [1.1. rospyとrclpyの書き換え](#11-rospyとrclpyの書き換え)
– [1.2. Python2とPython3の書き換え](#12-python2とpython3の書き換え

元記事を表示

djangoでmigrateをしたらtableがないと言われた件

# 目的
djangoでmigrateを行い、models.pyの変更を反映させようとしていたが、“`django.db.utils.OperationalError: table “テーブル名” already exists“`と言われてエラーが出てしまったため、何とかしたい。

# 結論

マイグレーションを最初の状態に戻し、マイグレーションファイルも削除し、もう一度マイグレーションをし直すことで解決した。

# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebre

元記事を表示

python loggingモジュール

#1 概要
既存システムのロギングの改修
## (1) 既存システム
(ⅰ) WEBアプリケーション  
(ⅱ) 同一ソースコードで2つのプロセス(workerではない)が動いている
(ⅲ) 2つのプロセスは同じログファイルに出力される。
(ⅳ) ログローテートされていない。

## (2) 改修ポイント
①[(1) 既存システム]の(ⅲ)について
 ⇒別々のログファイルに出力する。

②[(1) 既存システム]の(ⅳ)について
 ⇒ログローテーションを実施。

## (3) 実装
[(2) 改修ポイント]の①について
 ⇒プログラム起動時に別々の設定ファイルを読み込む設定を処理に修正。

[(2) 改修ポイント]の②について
 ⇒ログローテート間隔のバックアップ数はログ設定ファイルで対応可能
 ⇒圧縮処理は別途実装が必要となる。

使用するロギングクラス
TimedRotatingFileHandler
https://docs.python.org/ja/3/library/logging.handlers.html?highlight=logging%20hand

元記事を表示

DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法

# 目的
DjangoRestframeworkでModelViewSetを使ってシンプルに爆速でAPIを実装しようと思ったものの、HTTPメソッドによってはデフォルトの動作だけではなく、他の動作を追加してみたいとおもった。

# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 for macos10.15 on x86_64 |
| python | 3.8.12 |
| anaconda | 4.

元記事を表示

AWS LambdaでCSVを一時領域を利用せずS3に保存する

## はじめに
Lambdaでは一時領域として`/tmp`フォルダが提供されていますが、上限512MBのまでの制限があり大容量のCSVファイル生成があった場合に制限がかかっていました。
csvにストリーム出力してS3に保存する方法があるか調べてみました。

## 変更前
変更前のCSV作成〜s3アップロードは以下になります。
`/tmp`領域にファイル作成してS3にアップロードしていたので512MBを超えるファイルの作成はできませんでした。

“`python
import csv
import boto3
import psycopg2
import psycopg2.extras

def get_conn():
return psycopg2.connect(
host=’hostname’,
port=5432,
database=’xxxxxx’,
user=’xxxxx’,
password=’xxxxx’,
)

def get_data():
with get_co

元記事を表示

Pythonで引数のデフォルト値として関数呼び出しをするときの注意

### 先に結論
関数を定義した段階で、デフォルト引数で呼び出している関数の結果は確定する。

“`python
from time import time
from uuid import uuid4

def some_func(now=time(), uuid=uuid4()):
print(now, uuid)

some_func()
some_func()
some_func()
some_func()

# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
“`

### 実際に自分が起こした問題。
ユーザーインスタンス作成

元記事を表示

ゲーミング円運動

# はじめに

本記事は筆者が「ぬるぬる動くグラフが作りてえな~」と思って作ったものの副産物です。
解説に誤りがあるかもしれませんので見つけたら教えてください。

# 使用ライブラリ
・matplotlib
 - .animation
 - .pyplot

・numpy

## ライブラリ説明
・matplotlib
言わずと知れたグラフ描画ライブラリです。

・.animation
グラフを更新するモジュールみたいです。

・.pyplot
グラフを描画するモジュールみたいです。

・numpy
言わずと知れた配列・数学関数のライブラリです。

# ソースコード

“`python:gaming_circle.py

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation

n = 50
arry = np.linspace(0, 2*np.pi, n)
x = np.cos(arry)
y = np.sin(arry)

fig, axes = plt.subp

元記事を表示

PySimpleGUIでforで使えるプログレスバーを作る

要素をforで回すときにプログレスバーがほしいと思ったときに作ったもの。
基本的に最後のコードを読んだ方が早い気がする。

## PySimpleGUIについて
GUIをいい感じに作れるようになるライブラリ、これについては書いてくれている人がいくらでもいそうなので割愛。

## 2つのプログレスバースタイル
プログレスバーは処理の全体が分かっている場合のプログレスバーと、
処理がどれだけ残っているか分からない場合のマーキースタイルがある。
どちらが適しているかを使う側が意識しなくていいように、Sizedで判定させて自動で切り替えるようにした。

プログレスバーはsg.ProgressBarとして用意されているが、MAXが不明なマーキースタイルについては標準で用意されているものが見当たらなかったのでsg.Textをみっちり並べて色を変えることでそれっぽい動きをさせるようにした。

## 処理の流れ
Progressのインスタンスを作り、iterメソッドを使う。
またはProgressの第一引数にiterableを与えてProgress自体をforで回す。
iterは引数1つの使い方のみ。

元記事を表示

[Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング

クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでアカウントを作ったので、
手始めにYahoo! Japanのtopicsをスクレイピングしたかったのですが、403 Forbiddenエラーになります。これは、無料アカウントではPythonAnywhereからアクセスできるサイトが限られているためです。

Google.co.jpはアクセスできたので、Google Newsからヘッドラインをスクレイピングすることにしました。
https://news.google.co.jp

![スクリーンショット 2022-01-04 203150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/f5e41357-f060-af97-99a7-be21390160b2.png)

コードはこちらのサイトにのっているYahoo!のトピックスをスクレイピングするものをGoogle News用に変更しました。

【Webスクレイピング入門】ヤフーニュース の見出しとURLを

元記事を表示

Jupyter Labとipywidgets install 備忘録

#概要
ipywidgetsが使われているnotebookがJupyter labで正常に表示されなかったので、conda仮想環境作成時に忘れないように残す。
Colabは予め環境が出来ているので何もしなくとも問題ない。

– 実施期間: 2022年1月
– 環境:Python3.8.12 (miniconda)
– OS: Ubuntu20.04 LTS

##現象
いつもversion指定なしにJupyter labをインストールしている。

“`terminal
conda install -c conda-forge jupyterlab
“`

2022/1現在、指定しなければver.2.1.0が入る。
ver.2でipywidgetsを表示させるため下記を行った。

“`terminal
conda install -c conda-forge ipywidgets
conda install -c conda-forge ipympl
conda install -c conda-forge nodejs
conda install -n base -c cond

元記事を表示

PythonでQRコードを3行で作成してみた

## 0.はじめに
pythonを用いることで3行でQRコードを作成できるようなので、検証してみました。
##ライブラリをインストール
今回利用するqrcodeライブラリをインストールします。

“`
pip install qrcode
“`

## QRコードの作成
QRコードを作成します。

“`
import qrcode
img = qrcode.make(‘https://www.youtube.com/watch?v=dkWzWxrINRc’)
img.save(‘qrcode.png’)
“`

実行することで以下のQRコードを作成することができます。

![qrcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2465378/b43897b0-26ca-dfa2-9271-6f733d301564.png)

## 実行動画