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

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

Flaskのtest_clientでファイルアップロードのテスト

Flaskのtest_clientでファイルアップロード機能をテストする際につまづいたので、メモ。

▼やりたかったこと
test_clientを用いて、ファイルアップロードのリクエストを擬似的に発生させる

## 方法1. タプルを用いてファイルアップロードを再現
“`test_file.py
from io import BytesIO

res = app.test_client().post(‘/do_regist_post’, data=dict(text=’テスト’, file=(BytesIO(b’test’), ‘test.png’)),
content_type=”multipart/form-data”)
“`
・”file”がアップロードファイルが格納されるフォーム
・タプルで(\, ファイル名)を格納することで、\からのリクエストだと認識してくれるっぽい

## 方法2. FileStorageオブジェクトを用いてファイルアップロードを再現
“`test_fil

元記事を表示

古いUbuntuにpyenvで新しいPythonを入れる

やんごとなき理由により

# 環境
– Ubuntu 14.04

# やりたいこと
– pyenv で Python 3.9.0を入れる

普通にやると以下のようなエラーが出てしまう

“`
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
“`

# やること

## 新しいopensslを導入

14.04のopensslは古いので、Python 3.7以降が必要とするopenssl 1.0.2以降をビルドしてインストールする。

“`bash
cd /tmp
mkdir openssl-build
wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz
tar xvfz openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./config –prefix=/usr/local/openssl/1_1_1i –openssldir=/usr/local/openssl shared
m

元記事を表示

ImportError: DLL load failed: 指定されたモジュールが見つかりません。とエラーが出たら

##環境
windows 10
python 3.8.5

##初めに
Jupyter Labにて、
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
とエラーが発生して解決にてこずってしまったため、
メモとして書き記しておきたいと思いました。

##解決方法
解決方法はマイクロソフトのサイトの
[The latest supported Visual C++ downloads](https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0)
Visual Studio 2015, 2017 and 2019の下にある
・x64: vc_redist.x64.exe
をインストールしたら解決することが出来ました。

##原因
windowsにはvcランタイムがインストールされていなかったので、
インストールしてあげる必要があったみたいです。
上記のvc_redi

元記事を表示

pyenv install 3.x.x で error: C compiler cannot create executables

## 忙しい人向け
細かいことはいいから結論が知りたい人向けに先に結論を記載します。
[解決法3 xcode-betaのインストールと適用](#解決法3-xcode-betaのインストールと適用) で筆者は解決しました。

## はじめに

久々にPythonで遊ぼうと思ってpyenvでPython3系をインストールしようと思ったらハマって1時間かかったのでメモとして残します。

## 開発環境

– OS: macOS Big Sur 11.2
– pyenv: 1.2.22

## 事象

“`zsh

$ brew install pyenv
“`

実行後にバージョンを指定してPythonをインストールしようとするとタイトルのエラーが発生
します。
筆者の場合は3.9.1をインストールしようとしてエラーになりました。

“`zsh

$ pyenv install 3.9.1

~中略~

BUILD FAILED (OS X 10.15.7 using python-build 20180424)

Inspect or clean up the working tre

元記事を表示

A – Favorite Sound, B – Bitter Alchemy, A – Simple Math 2

2021年2月9日のくじかつ
精進内容!

##[A – Favorite Sound](https://atcoder.jp/contests/abc120/tasks/abc120_a)

O(1)

“`python:python
A, B ,C = list(map(int, input().split()))
res = min(B // A, C)
print(res)
“`

##[B – Bitter Alchemy](https://atcoder.jp/contests/abc095/tasks/abc095_b)

O(N)
貪欲法、まず最初にN種類のドーナツを作成できるか。
その後、最も少ない材料で作成できるドーナツを可能な数だけ作成する。

“`python
N, X = list(map(int, input().split()))

m = [0] * N
min_m = 1001
res = 0

for i in range(0, N):
m[i] = int(input())
min_m = min(min_m, m[i])

元記事を表示

A – Biscuits

##[A – Biscuits](https://atcoder.jp/contests/agc017/tasks/agc017_a)
最初は2^50のbit全探索を考えました。
2^50は「1.1258999e+15」ですね。
どう見てもTLEです。

“`python:python
import math

N, P = list(map(int, input().split()))
A = list(map(int, input().split()))

res = 0
for bit in range(0, 2 ** N):
total = 0
for i in range(0, N):
if (bit >> i) & 1:
total += A[i]

if total % 2 == P:
res+=1

print(res)
“`

ここで奇数と偶数に注目しました。
###p=0の時、数列の偶数の要素をnとした時の組み合わせは、

“`math
V1 = 1 (n

元記事を表示

Python:画像中の物体をMatplotlibで描写したい

#はじめに
・画像中の物体を座標変換等でpltで表示できるようにしました。

参考:[Python:OpenCVのエッジ抽出を利用した手抜き物体検出](https://qiita.com/horiday_qiita/items/be82c8a4b31d9b17abf8)

##具体例
[1]材料
![target2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1065409/61b26a22-eafe-ba24-fc4d-881a6c914d75.jpeg)

[2]完成
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1065409/f4f5c52b-46ce-e4b8-d647-38f8c2cb95cb.png)

#実装
##1.[前回](https://qiita.com/horiday_qiita/items/be82c8a4b31d9b17abf8)のまとめ
とりあえず、材料とす

元記事を表示

LINEリッチメニューの開発方法

#リッチメニューとは
>「LINE公式アカウントの機能の一つ「リッチメニュー」は、トーク画面の下部に大きく表示されるメニューです。画面を大きく占有するためユーザーの注意を引きやすいほか、クリエイティブとともにリンクを設定することで予約ページやECサイトなどにユーザーを誘導することができます。」
LINE for Business(https://www.linebiz.com/jp/column/technique/20180731-01/) より引用

ざっくり言うとユーザーができる行動をテキストでやりとりするのではなくリッチメニューで
表示されているボタンを押すことで簡単に利用することできるようになるということで、どうやらbotに
導入することでより便利になりそうな予感です。
この回では、個人的なメモと他に同じようにpythonでLINE messaging APIでリッチメニューを開発したい!と
考えている方の何かヒントになればという話を書きます。

#本編
まず初めに、今回この記事を参考にリッチメニューを作成しました。
[LINE Messaging APIのリッチメニューをP

元記事を表示

アプリ制作 herokuでのslug sizeについて

##この記事について
プログラミング初学者の私が初めてherokuにデプロイする際につまずいてしまったところを共有していけたらと思います。少しでも参考になれば幸いです。

##herokuでのデプロイ
今回私はFlaskを使ったアプリの開発を行いherokuへデプロイしようとしました。しかし最初から上手くいくはずもなくエラーがバンバン出てきました。
その中で一番出てきたエラーが
`Compiled slug size: 504.7M is too large (max is 500M).`
herokuにデプロイできる最大容量が500MB(無料版)に対して実際にデプロイしようとしたものが__504.7MBで容量オーバー__ですよというエラー。
あと4MBぐらいならrequirements.txtでモジュールを違うバージョンに書き換えて調整すれば500MBきるかなと思っていたんですが、デプロイしようとするたびに容量オーバーのエラーが出てしまっていました。
##原因
最初はモデルに読み込ませたデータ量が大きすぎたのかなと思いデータ量を少なくしてモデルを再構築しデプロイしてみましたが__結

元記事を表示

Python Anacondaでの開発環境 【VScode】

皆さん、記事主モノ([My Twitter](https://twitter.com/El4lQmonosiwnf) へ)です。
今回も学んだことについて、一つ一つアウトプットを兼ねて、Pythonに関する知識や理解を皆さんと共有できたらと思います。

さて、今回やっていくことは、実際にAnacondaを動かして開発環境を整えたり、パッケージの使いかたをアウトプットしていきます。

#1,Anacondaを起動してみよう
##1-1, 開発環境を整えていく
まずは、インストールしたAnaconda Navigatorを起動していきましょう。
下記の画像のように選択した後、二枚目の画像のように表示されれば起動は完了です。

※一枚目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927177/a6ae6a13-3bf8-319d-8246-ec63758aaf6f.png)
※二枚目
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

頑張らずにM1チップのまっさらMacでFlask環境を作ってみた

私のMacBookはまっさらなので、まずHomebrewをインストール。
Rosetta2が入っていればx86_64と同じように動く。便利。
[Homebrew](https://brew.sh/index_ja)のページに記載されているスクリプトを実行。

“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
これだけで動いた。
あとはHomebrewに指示された通りのコマンドを打つ。

“`
$ echo ‘eval $(/opt/homebrew/bin/brew shellenv)’ >> /Users/midori/.bash_profile
$ eval $(/opt/homebrew/bin/brew shellenv)
“`
前者のコマンドで次回シェルを開くときに自動的に処理が行われるようして
後者のコマンドで今開いているシェルに対して処理を行う、らしい。[参考](https://qiita.com/m-tma

元記事を表示

how install python version 3.9.0 in macOS Big Sur 11.2

#I bought new mac book pro and set up my env.

But pyenv install 3.9.0 is not working…

#新しいMacBook Proを購入してセットアップ!
しかし、pyenv install 3.9.0 がerror。lol

“`
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.0.tar.xz…
-> https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
Installing Python-3.9.0…
python-build: use readline from homebrew

BUILD FAILED (OS X 11.2 using python-build 20180424)

Inspect or clean up the working tr

元記事を表示

Python 学習環境を構築をする方法【Anaconda】

今回初記事となります。
記事主モノ([My Twitterへ](https://twitter.com/El4lQmonosiwnf))が学んだことについて、一つ一つアウトプットを兼ねて、Pythonに関する知識や理解を皆さんと共有できたらと思います。
某アニメの青タヌキのような暖かい目で見ていただけたら幸いです。

この記事ではWindows10パソコンにPython環境をインストールして使えるようにする方法について紹介していきます。
(間違い・こうした方がいい等ございましたら、ご指摘いただけたらと思います。)

以降pythonという言葉は、基本的にはpyhton3系を指します

#Pythonのインストールのやり方(Anaconda)
##Python初心者の方向け
まずAnacondaは、Pythonのディストリビューション(distribution)です。ディストリビューションとはコンパイルしてある設定済みのソフトウェアの集合体を指します。

WindowsでPythonを使うにはAnacondaという統合開発環境をインストールしていきます。Anaconda自体はただの箱であ

元記事を表示

テキスト読み込み

def setting_number_reading(self):
self.setting_number=[]

with open(‘./setting.csv’, encoding=”shift-jis”) as f:
reader = csv.reader(f)
header = next(reader) # ヘッダーを読み飛ばしたい時

for row in reader: # 1行づつ取得できる
self.setting_number.append(row[1])

if self.setting_number[0] ==””:
self.setting_number[0] = “0”

if self.setting_number[1] ==””:

元記事を表示

Dijkstra Algorithm

#Abstract
Dijkstra Algorithm[^1] is an algorithm for finding the shortest paths between nodes in a graph. It is well-known among Japanese science undergraduate students, for it is always taught as mathematical optimization. However, it is taught just a method by hand, not programming. So I will program it in order to review it in Python.

#Order
Dijkstra Algorithm Order $O((|V|+|E|)\log |V|)$ (where $|V|$ is the number of nodes and $|E|$ is the number of edges).

#Aim
– input
– start pla

元記事を表示

[Python]平方根の誤差

# 概要

[ABC191 D – Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d) で平方根を求める際に、浮動小数点数を返す `sqrt` は正方向に $1$ 以上の誤差を持つことがあり WA であった。
整数 $n$ に対して $a^2 \le n$ を満たす最大の整数 $a$ を得るには、`int(sqrt(n))` ではなく `isqrt` を使うと良い。

# 検証

手軽に計算可能な $1 \le n \le 10^7$ の範囲では `int(sqrt(n)) != isqrt(n)` である $n$ は見つからなかった。
調べたところ $2^{52}+2^{27} = 4,503,599,761,588,224$ が条件を満たす最小の数だそう。

>FWIW, assuming IEEE 754 semantics (with C’s double matching IEEE 754’s binary64), the smallest n for which int(math

元記事を表示

【Python】ABC191 D – Circle Lattice Points (誤差問題)【AtCoder】

[ABC191 D – Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d)

ふりかえりをしていたが、
解説見て、解き方わかったのにどうしてもWAが消えない
10000倍して、整数でやってるつもりなのに、どうして!!!
ということでACの人たちのコードみたら、
10000倍してる人も**ルート計算で結局Decimal使ってるっぽい!**

#結論

**Decimal最強伝説!**
誤差問題はDecimalで提出しましょう。
※ちなみに、PyPyはDecimal計算遅いので、Pythonで提出しましょう。

#以下結論までの軌跡・・・
提出したコードたちはこちら

“`python:WA1.py
import math,sys
def LS(): return list(sys.stdin.readline().rstrip().split())
#############################
from decimal import Decimal
n = 10000
X,Y,

元記事を表示

Python3: JWT のペイロード部をデコード

こちらのプログラムを Python3 で書き換えました。
[Node.js: JWT のペイロード部をデコード](https://qiita.com/ekzemplaro/items/3e2c1e9cf9189a79b27c)

“`py:decode_jwt.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# decode_jwt.py
#
# Feb/08/2021
#
# ——————————————————————
import sys
import os
import json
import urllib
import requests
import base64
#
# ——————————————————————
def decodeJWT(str_token):
sys.stderr.write(“len(str_token) = %d\

元記事を表示

open(0)とすると標準入力に対応するファイルオブジェクトが取得できる

Python3で標準入力から入力を読む方法はいくつかありますが、組み込み関数の`open`を使って、`open(0)`とすると標準入力に対応するファイルオブジェクトを取得できます。

利用例としては以下のようになります。

“`python
stdin = open(0)
for line in stdin:
do_something(line)
“`

`open`の引数を`0`にすると、なぜ標準入力になるのでしょうか? [ドキュメントを注意深く読むと以下のように記述されています。](https://docs.python.org/ja/3/library/functions.html#open)

> file は path-like object で、開くファイルの (絶対または現在のワーキングディレクトリに対する相対) パス名を与えるものか、または、ラップするファイルの整数のファイルディスクリプタです。

`open`の引数としてはファイルパスだけでなく、ファイルディスクリプタを示す整数を指定することもできます。標準入力のファイルディスクリプタは0ですから、`ope

元記事を表示

Python3: Firebase Auth のトークンの作成

次の記事を参考にしました。
[PythonでFirebase Authenticationのトークン取得とFastAPIでトークン検証](https://qiita.com/DeliciousBar/items/d6845d329e37f21a6d4f)
参考ページ
[Relyingparty: verifyPassword](https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyPassword)

“`py:get_token.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# get_token.py
#
# Feb/06/2021
#
# —————————————————————-
import sys
import os
import requests
from dotenv import load_dotenv
# —–

元記事を表示

OTHERカテゴリの最新記事