Python3関連のことを調べてみた2021年10月11日

Python3関連のことを調べてみた2021年10月11日
目次

windows10へ2021年10月10日時点で最新のPython3.10.0で jupyter lab をpipでインストールしようとしたら遅延しまくってはまった件について

最近もっぱらMacbookで開発していて、自作PCのwindows10へはjupyterlabはおろか、pythonすらインストールされていないというとても稀有な環境下からjupyter labのインストールを試みた。

そうしたら、結果的に1日以上の時間を浪費したので備忘録。
ただし、結論から得られた教訓をまず言うと、大切なのは問題解決であって、最新が良いわけではないということ。
問題解決の目標大事。

# 経緯
自動売買システム構築やら言語解析のためちまちまとコードを書くためのツールとして、所有する全デバイスにjupyter notebookをインストールしたいと思う。

実行環境は自宅PC(windows)やリモート(CentOS)を想定しているので、マシンパワーのあるPCでDockerを動かしてローカルで検証してリモートに投げようかしら。

じゃあ、windowsでも開発できるようにjupyternotebookあったら便利じゃないですか。

よし、インストール!!! (所要時間10秒)

# 遅延にぶつかるまでの流れ
公式サイトから、最新のPythonのインストーラーをゲット

元記事を表示

Python機械学習/pickleファイルを使ったオブジェクトの保存

# Summary
Pythonで機械学習をする際のデータやモデルの保存にはpickleファイルを使用するのが非常に便利なので,その使い方についてメモを残しておく.

# データの準備
今回はScikit-learnのガンデータを使用.

“`py
from sklearn.datasets import load_breast_cancer
import pandas as pd

cancer = load_breast_cancer()
data_feature = pd.DataFrame(cancer.data, columns=cancer.feature_names)
data_target = pd.DataFrame(cancer.target)
“`

# csvファイルでデータ管理
まずは一般的なCSVファイルでのデータ読み書きについて記す.

csvファイルで保存

“`py
data_feature.to_csv(‘data_feature.csv’)
data_target.to_csv(‘data_target.csv’)
“`

csvファイルの

元記事を表示

Ubuntuに最新バージョンのPythonをインストールする

ubuntu20.04に最新のPython3.10.0をインストールする

###Ubuntuのバージョン確認。
cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION=”Ubuntu 20.04.3 LTS”

###アーキテクチャは64bit。
arch
x86_64

###ビルド環境の準備
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev

###ソースコードのダウンロード
Python Japanのダウンロードページ
https://pythonlinks.python.j

元記事を表示

Python3.10 新機能!パターンマッチ構文解説

# はじめに
Python3.10.0 が2021年10月4日にリリースされました。その中でもパターンマッチ構文は大きな機能追加の一つだったため、この記事で解説したいと思います。

https://www.python.org/dev/peps/pep-0634/

私が運営しているYouTubeチャンネルの動画内でも解説しているのですが、動画をみるのが苦手、テキストで知りたい、という人向けにQiitaでも記事を投稿することにしました!

# 基本構文
パターンマッチは、あるオブジェクトに対して、どのパターンにマッチしているかを評価して処理を分岐させる構文になります。

`match`の後ろに、調べたい対象のオブジェクトを指定して、`case`の後ろにパターンを記載します。例えば、ひとつ目の`case`のパターン1に当てはまった場合は、`case`の中の処理が実施されます。パターンは色々な記載ができるため、いくつか解説していきます。

“`python3:base.py
match 対象オブジェクト:
case

元記事を表示

kivyMDチュートリアル其の参什漆 Components – NavigationRail篇

ハロー、Qiita。清秋の候、すがすがしい秋晴れの
今日この頃、いかがお過ごしでしょうか。

はいー、先週入れられてなかった時候の挨拶ですが、今週で使ってみました。
合ってますかね、使い方。

先日は地震などがありましたが、みなさんはご無事でしたでしょうか。常日頃、
備蓄などはしないといけないなと感じたくらい、身の危険を感じましたね。と、
いってもいざ事が起きたときは何も動けなかったのですが汗

というわけで、少し話は脱線しましたがKivyMDの時間は相変わらずオープン
します。今日は、NavigationRail編となります。

## NavigationRail

いざ始まるといっても、いつものリンクは飛ばすというのはありますが、今日は
少し重要なこともあるので何点か触れてみます。

2点ほどあるのですが、まずは他のナビゲーションと組み合わせてはいけないという
ことですね。他のナビゲーションとしては、先週やったNavigationDrawerともう
1つは以前やったBottomNavigationですね。これらと組み合わせると望ましくない
と書かれてあります。

もう1点は、デバイ

元記事を表示

Python 基礎

## 目次
1. [基礎文法](#1-基礎文法)
1. [演算子](#2-演算子)
1. [制御文](#3-制御文)
1. [関数](#4-関数)
1. [モジュールとクラス](#5-モジュールとクラス)

## 1. 基礎文法

### 基本的なルール
* 文末のセミコロンは不要(つけることもできる)
* {}で処理をまとめるのではなく、インデントで処理をまとめる
* メンバアクセスはドットで行う
* 処理を複数行にまたぐ場合、改行にはバックスラッシュを使用する

### 変数
* 「変数名 = 値」で宣言できる
* 「変数名:型名 = 値」で型を明示して変数宣言できる

※ただし、実行時に指定型以外の値を入れても、実行時エラーとはならないので注意
型指定はあくまで制作側へのヒント。

“`python
# 型指定なし
val = 10

# 型指定あり
val:str = ‘あいうえお’
“`

### コメント
* 単一行は「#」
* 複数行のコメント機能はないが、3重のシングルクォートorダブルクォートで囲むことで、複数行の文字列扱いにできる

“`python
# 単

元記事を表示

Pipでuwsgiのインストールが失敗する場合の対処法

# 事象
pipにてuwsgiをインストールしようとしたところ、下記のとおり失敗した。

“`
$ sudo pip install -U uwsgi
Collecting uwsgi
Using cached uwsgi-2.0.20.tar.gz (804 kB)
Building wheels for collected packages: uwsgi
Building wheel for uwsgi (setup.py) … error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-97dwq_9q/uwsgi_24c3a89c34c847b9be2d2f525d846ef6/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-97dwq_9q/uw

元記事を表示

【AtCoder】ABC207のA,B,C問題を解く

# PythonでABC207のA,B,C問題を解く

ABC222のA,B,C問題をPython3で解答しています。
簡単な解説はコードの中に記載しています。

SNSでの発信も少しずつ始めました。フォローしていただけたらフォロー返してます。。!
[Twitter](https://twitter.com/Edu_ner)

[A – Four Digits](https://atcoder.jp/contests/abc222/tasks/abc222_a)
##
“`python:python
# 文字列として受け取り、足りない桁文を足す。
n = input()
length = len(n)
if length == 4:
print(n)
elif length == 3:
print(‘0’+n)
elif length == 2:
print(’00’ + n)
elif length == 1:
print(‘000’+n)
“`

[B – Failing Grade](https://atcoder.jp/conte

元記事を表示

Pythonでランダム文字列を生成する

## 結論
こうするとできます。コメントアウトに出力を書いてます。

“`python
import random
s = ”.join(random.choices(‘PA’, k=4))
print(s)
# PPAP
“`

## 解説

`random.choices(‘PA’, k=4)` で `P`,`A` からランダムにどちらかを4回選んでリストに入れたものを作ります

“`python
import random
print(random.choices(‘PA’, k=4))
# [‘P’, ‘P’, ‘A’, ‘P’]
“`

`”.join` で文字列のリスト `[‘P’, ‘P’, ‘A’, ‘P’]` を空文字で連結します

“`python
print(”.join([‘P’, ‘P’, ‘A’, ‘P’]))
# PPAP
“`

以上

## ちなみに

`string.*` が便利です。`’PA’` の代わりに使うと良いかもしれません。

“`python
import string
print(string.ascii_lowe

元記事を表示

pip installをしたときにGitのsubmoduleがインストールされない問題

# はじめに
Github上で開発をしている際に開発しているmoduleとは別のRepositoryのmoduleを利用したい場合があります.
そのようなときに`submodule`を利用します.一方で,単純にsubmoduleを加えるだけだと`pip install`をした際にsubmoduleが追加されないという問題が発生します.その対処法について簡単に説明します.

参考:[How to write setup.py to include a Git repository as a dependency](https://stackoverflow.com/questions/32688688/how-to-write-setup-py-to-include-a-git-repository-as-a-dependency/)

# 問題設定
Sphere関数という関数を作成し,それをsubmoduleとして利用したいケースを想定します.
例として[submodule_practice_parent](https://github.com/nabenabe0928/submod

元記事を表示

Pillow(PIL)で生成するgifの画質を上げる

## 単刀直入
`im.quantize()` するだけ

## はじめに
Pythonの画像処理ライブラリのPillowを使えば、簡単にgifアニメーションを作ることができます。
詳しいことはみんな大好き[note.nkmk.me](https://note.nkmk.me/python-pillow-basic/)に譲りますが、適当に画像を数枚開いてオプションを決めるだけです。

“`python:makegif.py
from PIL import Image

im1 = Image.open(“hoge.png”)
im2 = Image.open(“huga.png”)
images = [im1, im2]
images[0].save(‘test.gif’, save_all=True,
append_images=images[1:], optimize=False, duration=500, loop=0)
“`

![test.gif](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSからキーワード検索結果のニュースを取得(スクレイピング)してみた

# はじめに

前回記事に続き、データ収集に関する投稿です。

1. [ニュースアクセスランキング編](https://qiita.com/Blaster36/items/163333b81398b5bd4af0)
2. [今日のニュース編](https://qiita.com/Blaster36/items/3d02a050f61218679ae0)
3. [話題のニュース編](https://qiita.com/Blaster36/items/f631727cd270abc57993)
4. キーワード検索結果のニュース編 ★本稿

今回は、たくさんのニュースに対して、キーワード検索した結果の取得を目指します。
WebブラウザでTop画面を表示した際の、左肩にあるテキストエリアにキーワードを入力して、検索した画面の画面です。
↓↓↓キーワード「**緊急事態宣言 解除**」での検索結果の例↓↓↓
![検索結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/685193/234490ac-016d-b9

元記事を表示

【FastAPI】テストケース毎に独立したDBデータを使用する(GitHub Actions付き)

ORMと連携した機能のテストを行う際、テストケース(= テスト関数)毎にクリーンなデータベースが欲しい(**テストケース間の依存関係が生まれてほしくない**)。

この点についていい感じの方法が実現できたためご紹介する。

– 参考(一部重複内容あり)
– [FastAPIでテスト用のクリーンなDBを作成してpytestでAPIのUnittestを行う](https://qiita.com/bee2/items/ff9c86d8d345dbcab497)

本記事のソースコード:[skokado/fastapi-tutorial](https://github.com/skokado/fastapi-tutorial)

# 環境

– Python: 3.8
– fastapi==0.68.2
– SQLAlchemy==1.4.25
– SQLAlchemy-Utils==0.37.8
– pytest==6.2.5
– factory-boy==3.2.0

# アプリケーション準備

ユーザ認証とブログ管理を行う簡単なアプリケーションを用意する。
※アプ

元記事を表示

Error: Session cannot generate requests tensorflow の解決方法

表題のエラーに数時間苦労しました...
もし同様のエラーでお悩みの方の参考となれば幸いです.

# ハマりポイント
VScode上で,GPUとTensorFlowを用いて学習させたところ,モデルのトレーニングを行うセルで,突然以下のエラーが発生するようになりました.

“`
Error: Session cannot generate requests tensorflow
“`
また,一度このエラーが発生すると,以降はどのセルにおいても同様のエラーが発生するようになります.

# 環境

“`
Ubuntu 18.04
VScode 1.61
Python 3.8
Tensorflow 2.5
“`

# 解決方法
結論から言うと,無駄なプロセスにGPUメモリが割かれていて,十分なメモリが確保できないことが原因の一つであると考えられます.
そのため,まずは,現在のGPUプロセスを確認してみます.

以下のコマンドから,GPUの状況を確認してください.

“`terminal
~$ nvidia-smi -l 1

+—————————–

元記事を表示

Python3.7系をwindowsにインストール

# 「このインストールはシステムポリシーで許可されていません」とエラーが出る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182994/30213fd2-a936-416b-9330-24345fac29fd.png)

# 対処方法

以下サイトにある通り、MAX_PARHの除去が必要らしい
https://docs.python.org/ja/3.7/using/windows.html#removing-the-max-path-limitation

## 1.MAX_PATHをレジストリエディターから除去

https://knowledge.autodesk.com/ja/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/JPN/The-Windows-10-default-path-length-limitation-MAX-PATH-is-256-characters.html

以下のように

元記事を表示

Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSから話題のニュースを取得(スクレイピング)してみた

# はじめに

前回記事に続き、データ収集に関する投稿です。

1. [ニュースアクセスランキング編](https://qiita.com/Blaster36/items/163333b81398b5bd4af0)
2. [今日のニュース編](https://qiita.com/Blaster36/items/3d02a050f61218679ae0)
3. 話題のニュース編 ★本稿
4. [キーワード検索結果のニュース編](https://qiita.com/Blaster36/items/680000a7479e3a90857f)

今回は、[話題のニュース](https://news.livedoor.com/social_reaction/)が対象です。
というわけで、Pythonプログラムで取得(スクレイピング)する処理を実現してみようと思います。

※本稿執筆時点(2021/10/07)の情報に基づき、Code紹介と実行例を示します。

## 本稿で紹介すること

– 話題のニュース(livedoor NEWS)の取得

尚、筆者は以下のVersionで動作確認をしています

元記事を表示

Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSから今日のニュースを取得(スクレイピング)してみた

# はじめに

前回記事に続き、データ収集に関する投稿です。

1. [ニュースアクセスランキング編](https://qiita.com/Blaster36/items/163333b81398b5bd4af0)
2. 今日のニュース編 ★本稿
3. [話題のニュース編](https://qiita.com/Blaster36/items/f631727cd270abc57993)
4. [キーワード検索結果のニュース編](https://qiita.com/Blaster36/items/680000a7479e3a90857f)

今回は、[今日のニュース](https://news.livedoor.com/straight_news/)が対象です。
というわけで、Pythonプログラムで取得(スクレイピング)する処理を実現してみようと思います。

※本稿執筆時点(2021/10/07)の情報に基づき、Code紹介と実行例を示します。

## 本稿で紹介すること

– 今日のニュース(livedoor NEWS)の取得

尚、筆者は以下のVersionで動作確認をしています。

元記事を表示

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xc3 in position 124: invalid continuation byte が出たときのその場しのぎ対処

Python力が低いのでメモ。

https://github.com/deepmind/alphafold/blob/1d43aaff941c84dc56311076b58795797e49107b/alphafold/data/tools/jackhmmer.py#L131-L140

“`python
process = subprocess.Popen(
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
with utils.timing(
f’Jackhmmer ({os.path.basename(database_path)}) query’):
_, stderr = process.communicate()
retcode = process.wait()

if retcode:
raise RuntimeError(
‘Jackhmmer failed\nst

元記事を表示

【Python】enumerateの使い方

# enumerateメソッドはlist, tuple, dictionaryに全部適用されます。
普通のfor文要素しか取り出せないが、
enumerateだと要素とindexの両方とも取り出せます。

### 1. List
“`python
databases = [‘MySQL’, ‘PostgreSQL’, ‘SQLite’, ‘MariaDB’]

for index, data in enumerate(databases):
print(index, data)

“””
結果:
0 MySQL
1 PostgreSQL
2 SQLite
3 MariaDB
“””
“`

### 2. Tuple
“`python
databases_tp = (‘MySQL’, ‘PostgreSQL’, ‘SQLite’, ‘MariaDB’)

for index, data in enumerate(databases_tp):
print(index, data)

“””
結果:
0 MySQL
1 PostgreSQL
2 SQLite
3 Mar

元記事を表示

毎日色々と巡回して自動で通知してくれる便利Botを作ってみる【応用可】

毎日Botが自動でWeb上を見回って通知してくれると便利ですよね。

**祝日まであと何日だろう?**
**明日ってゴミの日だっけ?**
**そういえばいつも見てるあれ今どうなってるかな**

こういった時に普通だと自分で確認する事になると思うのですが全て自動でやらせてみる。
という事で出来るだけ初心者でも出来る便利Botの作り方を解説していきます。

・Slackの例
![SlackBot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307359/d907200e-ebb5-5d21-fd64-1eb724a11495.png)
・Twitterの例
![TwitterBot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307359/fbe312ea-f28b-e044-d195-7cd51a0a1e70.png)

## ? 通知出来るもの
通知したいデータを取得さえ出来ればどんな物でも可能です。
それをSla

元記事を表示

OTHERカテゴリの最新記事