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

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

DockerでPythonにてGDALを利用する

# 概要

geotiffを利用する際に、少しハマったので、備忘録。

結論から言うと、Pyhonにおける「GDAL」ライブラリと「libgdal-dev」のバージョン対応が間違っていたことが原因でした。
**apt標準リポジトリにおいて管理される安定版「libgdal-dev」はv2.4.0です(2020年11月19日現在)。これにより、pipにて単純に「pip install GDAL」とするとv3.2.0がダウンロードされますが、v3.2.0に対応する「libgdal-dev」はv3.2.0以上必要です**。そのため、インストールする際は「**pip install GDAL==2.4.4**」とし、バージョン指定する必要があります。
この辺りを踏まえたdockerfileなどを以下に記載します。

# 前提条件

ここでは、以下のことを考えています。

– dockerを利用し、環境を使いまわせるようにする。
– あまりanacondaは好きじゃない
– Pythonを利用するのは、学習コストが低いため
– docker-composeはあくまで動作テスト用に記載
– コード

元記事を表示

2次元配列の動きを眺める関数を作った(Python)

# はじめに

主に競プロにて、2次元配列の変化を観察したいときがあると思います。
DPとか、DPとか。

1次元配列ならまだしも、2次元配列を逐次`print`するとかなり見にくい。
ということで、2次元配列の変化をじーっと眺めるための関数を用意しました。

完成品はこちら↓

“`python
from time import sleep
def print_2d_overwrite(list2d, val_width=5, sleep_sec=1.0, header=None, highlights=[]):
res_str = f'{header}\n’ if header is not None else ”
for i, row in enumerate(list2d):
for j, v in enumerate(row):
v_str = str(v).rjust(val_width)
if (i,j) in highlights:
v_str = f

元記事を表示

urllib3.exceptions.LocationParseError: Failed to parse への対策

`pip`でインストールしたコマンドなど、Pythonで書かれたコードで起こる問題。どうやらURLをパースするのに失敗しているらしい。
どうにも局所的でかつユーザ側の環境による問題なのだが、それ故か対処法がまとまっていなかったのでメモしておく。

### 経緯
atcoder-tools(競プロ用のツール)を使っていたところ、11月のはじめあたりに突然正しく動作しなくなった。ツールにアプデがあったわけでは無い、というかそもそも自分ではupdateを挟んでいないのでupdateで動作しなくなったというわけではなさそう。本当に心当たりがないのでよくわからない。

エラーを見ると

“`python
File “/usr/lib/python3/dist-packages/requests/models.py”, line 380, in prepare_url
scheme, auth, host, port, path, query, fragment = parse_url(url)
File “/usr/lib/python3/dist-packages/urlli

元記事を表示

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-q9rtk_fz/grpcio/ の対処法

# やりたいこと

CentOS7+Python3.6.8の環境にて
pip3でtensorflowを入れてから、kerasを入れたい。

# 現象

“`
pip3 install –upgrade tensorflow
“`

を実行すると、

“`
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-q9rtk_fz/grpcio/
“`

が発生する。

# 対策

下記を実行する。

### pip3 install –upgrade pip

“`
pip3 install –upgrade pip

WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install –user` instead.
Collecting pip
Downloading https://files.pythonhosted.org/pack

元記事を表示

CentOS7+Python3でpip3が使える環境を構築する

# やりたいこと

CentOS7にPython3をインストールしてpip3を使いたい。

# 前提

* CentOS7がインストール済であること。
* root権限でSSH接続できること。

# インストール前

当然、pip3コマンドは使えない。

“`
bash: pip3: command not found
“`

python -V
を打つと

“`
Python 2.7.5
“`

と表示される。

python3.6 -V
を打つと

“`
bash: python3.6: command not found
“`

と表示される。

# インストール手順

rootで下記を実行するだけ。

“`
yum install python3
“`

そして、y を入力して、

“`

Installed:
python3.x86_64 0:3.6.8-17.el7

Dependency Installed:
libtirpc.x86_64 0:0.2.4-0.16.el7 python3-libs.x86_64

元記事を表示

Extendable skeletons for Vim using Python, Click and Jinja2

## Problem statement
As a member of the software team at *Datawise, Inc.*, I want my part of code to be identifiable. Not just due to vanity, but also
in order to be able to clearly identify the responsible when some part of our system fails.

For a long time, I believed that `git` is a perfect solution to this problem, as while being almost seemless, it allows one to track the authorship line-wise, which
is more than enough.

However, something happened recently, which made rethinking this beli

元記事を表示

Pythonを使ってジャンケンをするプログラム

この記事では、
Pythonを使ってジャンケンをするプログラム
を書いていきます。

##求め方
1, Botの出す手をランダムで生成する。
2, あいこだった場合、もう一度繰り返す。
3, ジャンケンの結果を表示

**1, Botの出す手をランダムで生成する。**
まずはBotの出す手をランダムで生成していきます。

色々なやり方がありますが、今回はrandom.randint(0, 2)でやります。
これは、ランデムで範囲内の整数を生成できます。

この整数をグー・チョキ・パーに当てはめていきます。

“`janken.py
import random

def janken(your_result):
n = random.randint(0, 2)
if n == 0:
bot = “グー”
elif n == 1:
bot = “チョキ”
else:
bot = “パー”
“`

**2, あいこだった場合、もう一度繰り返す。**
次に、あいこだった時に、もう一度最初からやり直すように書いて

元記事を表示

エラーと戦う

# pythonで出たエラーに苦戦した話
この記事は検索下手な私が「ん?これってなんのこっちゃ」ってなった体験談ww

## attribute error
~~~
AttributeError: module(object) ‘xxx’ has no attribute ‘yyy’
~~~
このようなエラーが出ることがある..

## 今回私が起こしてしまったエラーは関数の返り値がオブジェクトの際、返り値を入れるオブジェクトの内容が変わってしまった時起きた…

~~~python:sample.py
class Person:
def __init__(self, name:str, age:int):
self.name = name
self.age = age

def renamed(person, pserson2):
person.name = ‘Kein’
return person, ron

bob = Person(‘Bob’, 19)
ron = Person(‘Ron’, 23)
kein = ren

元記事を表示

【Tips】pyenvでPython3系の3.5.3未満をインストールしようとしたときに発生するエラーへの対処

# 問題:Pythonインストールにおけるエラー
## 入力
“`shell
pyenv install 3.4.8
“`

## 出力
“`shell
Downloading Python-3.4.8.tar.xz…
-> https://www.python.org/ftp/python/3.4.8/Python-3.4.8.tar.xz
Installing Python-3.4.8…
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems

BUILD FAILED (Ubuntu 18.04 using python-build 1.2.19-1-gece59ca8)

Inspect or clean up the working tree at

元記事を表示

heroku + Python で Twitterトレンド bot 作る

# 目的
 ブラウザ版、アプリ版ともに、Twitterのトレンドは__トップ30__ぐらいしか見ることができません。
 トレンドのページにずっと張り付くのも面倒ですし、__任意の地域__のトレンドを見るのも難しいです。

 そこで、Twitter APIを利用してトレンドを取得し、任意のハッシュタグがトレンドにあったときに通知をするTwitter botを作りましょう。
 Twitter APIを利用すれば、__任意の地域__のトレンドを__トップ50__取得できます。
 たぶん無料で運用できるはず。
 記事で扱っているコードの一部を書き換えるだけで動くと思います。

 ローカルで試したいだけの方は適宜読み飛ばしてください。

# 本文
## 準備

### botのtwitterアカウント作成
 つくってください。

### ディレクトリ準備
 botのファイルを保存するディレクトリを作成してください。
 以下で作成するファイルは全てここに保存すること。
 ここでは`vtuber-twitter-bot`とします。最終的にはこんな感じの構成。

“`
vtuber-twitter

元記事を表示

言語を自作してみた。(1)

# 言語を自作してみたよ。
皆さんは言語を自作したことがありますか?え?ある?、、、、、あら、そう。

待って!ブラウザバックしないで!おもしろいですから?この記事!
、、はい。ありがとうございます。改めて、今回は「自作の言語を作ってみた」回の
第一回目であります。~~まあ書き溜めてたのを記事にしただけなんですけど。~~
それじゃあ早速行ってみましょう!

# 何で作るの?
筆者は(当たり前ですが)プログラムを書きます。その時、ふと頭に浮かんだのです。
「PCに言語で命令できるのなら自作の言語でも同じようにできるのでは?」と。
今考えればすぐに忘れるようなことだったのですが、筆者は変わり者なので「ならば作ってしまおう!」
と考えてしまったわけです。

# 概要
python3.8.5使用
パーサなど:すべて自作(<-ほめて!) ##文法 - 型指定させたい - ()の代わりに{}使いたい。個人的に形が好きだから。 - とりあえず関数定義とかはあと。でも実現させたい。だってまだ1回目だもん。 # コードなど あ、書き忘れてましたがGithubに載せてます。 URL:https://g

元記事を表示

Python3エンジニア認定基礎試験~模擬試験を解いてみた〜

#この記事について

Python 3 エンジニア認定基礎試験の勉強した内容を記事にしました。

##試験概要

試験名:Python 3 エンジニア認定基礎試験
問題数:40問
出題形式:選択式
試験方式:コンピューター上で実施するCBT(Computer Based Testing)形式
試験時間:60分
合格基準: 7割正解
受験料:一般価格 11,000円(税込)
学割価格:5,500円(税込)

出題範囲
出題範囲は主教材であるオライリー・ジャパン「Pythonチュートリアル 第3版」より以下の比率で出題します。

詳細はこちら
https://cbt.odyssey-com.co.jp/pythonic-exam.html

#模擬試験の問題

問1 以下のプログラムを実行した際の出力結果を選びなさい。

“`python:terminal
import json
x = {‘name’:’yamada’,’data’:[2,3,4]}
print(json.dumps(x))
“`
JSON(JavaScript Object Notation)は、軽量のデータ

元記事を表示

pythonでのMysqlの使い方

## はじめに
この記事はYoloで受け取ったデータをもとに可視化する為の方法として,Mysqlを利用する方法を記入していくつもりです.
Mysqlの使い方は以下の記事を参考に記事にしていきたいと思います.
>Python + mysql-connector-python の使い方まとめ
>https://qiita.com/valzer0/items/2f27ba98397fa7ff0d74

##環境
>python8.x
xamppを利用(Mysql)

## 使用しているライブラリ
>mysql.connector

## データベースの構成
databasename:mask
table:mask-ok-or-ng1
カラム:3

|name |format
|:———-|—–:|
|day | day |
|time | time |
|ok-or-ng | text |

## 実装したコード
“`
def sqlng():
day = datetime.date.today()
time1 =

元記事を表示

文章内の人名や地名を抜き出して列挙する

##問題意識

1. テキスト文の解析手法としての固有表現抽出は、良い意味で「枯れた」、信頼性の高い手法です。
2. テキスト文から意味を抽出する技術としては、文章の自動要約モデルがあり、深層学習を用いた要約文の自動生成モデルなども、膨大な件数の論文が日々、提案されています。
3. 文章の自動要約技術は素晴らしいものですが、生成された要約文からは、元の文に含まれていた、特定の「人物名」や「地名」が脱落してしまう事が多いと思います。
4. 興味を持ったテキスト文中に含まれる「人物名」の単語だけを、すべて漏らさず一覧出力することで、その文書が「誰」に言及していて、誰に言及していない文であるのかを、ひと目で確認することができます。
5. このように、要約文から漏れてしまう「情報」を、固有表現を抽出することで、すくいとることができるケースがあるのではないでしょうか。

__( 参考 )__
なお、文章の自動要約モデルには、*Extractrive summarization*と*Abstractive summarization*モデルの2つの流れがあります。

・ [@koreyouさんQ

元記事を表示

Djangoでログイン機能の実装

これは自分の備忘録です。
自学のために色々調べたのですが、バージョン2の解説等が多くややこしかったのである程度まとめておきます。
同じような悩みにぶつかった人のためになればと思って書いています。
暖かい目で見守って下さい!(何か修正点あればどしどしお願いします)

大体のことはチュートリアルやればわかる(適当)
https://docs.djangoproject.com/ja/3.1/intro/tutorial01/

<使用環境>
・OS…windows10
・Python…3.7.6
・Django…3.1.3

環境構築

ローカルにpythonをインストールしても良いですが、パッケージ管理等を考えるとanacondaを使用した方が良いかと。
ここら辺は調べたらたくさん出てくるのでスルー。

見落としがあれば申し訳ありません。
パッケージは恐らく

“`
pip install django
pip install pillow
“`

だけだったはず、、、!!

Let’s Start Project!!

ここら辺も同じ

元記事を表示

googleapiclientを使うプログラムでPyInstallerするとエラーがでた話

# 問題
Google Api(スプレッドシート)を使うプログラムをPyInstallerで実行ファイル化しようとしたら,コンパイルはできたが実行時にエラーが発生.
コンパイルしたプログラムは以下のようなもの

“`python:main.py
from googleapiclient.discovery import build
# 以下略
“`
ここで,

“`sh
pyinstaller –onefile main.py
./dist/main # コンパイルに成功し,実行ファイルができる
“`
さて,実行ファイルを実行すると,

“`
pkg_resources.DistributionNotFound: The ‘google-api-python-client’ distribution was not found and is required by the application
“`
:middle_finger_tone2::laughing::middle_finger_tone2:

# 解決方法
google-api-clientのバージョンを*

元記事を表示

総務省APIを使ってデータを取得する

# 総務省APIを使用してデータを取得

計量経済学のパネルデータを作成するためにPythonでデータをとってみました。(備忘録です)

## 準備
Python実行環境
総務省APIの取得
[こちら](https://www.e-stat.go.jp/api/api-info/api-guide)からユーザ登録して取得できます。

## コード

“`python:def_TakeData
import requests,urllib
import pandas as pd
import numpy as np
import json
def get_json(base_url,params):
params_str=urllib.parse.urlencode(params)
url=base_url+params_str
json=requests.get(url).json()
return json

def take_data(dataid):
appID=”appIDを入れます”
base_url=”http://ap

元記事を表示

Ubuntu 20.04でSSL接続エラー(ssl.SSLError: [SSL: DH_KEY_TOO_SMALL])が発生する際の対処法

Ubuntu 20.04でPythonのサードパーティAPIを用いてSSL通信しようとしたところ以下のエラーが発生。Ubuntu 20.04で起こるらしい。
>(Caused by SSLError(SSLError(1, ‘[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1123)’)

下記のQAを参考に解決した方法をまとめます。
https://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

# このエラーが発生する背景
Debine系のOpenSSLのデフォルト設定がよりセキュアになったことが原因らしい。
セキュアになった背景はこれです。(英文です)
https://weakdh.org/

簡単に概要を訳すとSSLで使用する鍵交換のアルゴリズムに脆弱性が見つかったため。
脆弱性に該当するSSL通信をしようとするとDH_KEY_TOO_SMALLのエラーが発生する。

根本解決としてはサーバー側のセキュリティが改善

元記事を表示

blender, python, らせん階段、色

改良点はわずかですが、色つけて回転軸を変えてカメラ注目点を変えました。
動画1秒はtwitterで[この動画](https://mobile.twitter.com/naohiko7/status/1328308708959404043)です。
![bph38color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690216/d24b05b7-a66e-a811-0ec8-7136b163d565.png)

“`python3
# nh38 == 5階建ラセン。2020.11.14–2020.11.16
import bpy
import math
import random
# ========= DELETE ALL mesh, light, camera, みな削除する2行 =========
for item in bpy.data.objects:
bpy.data.objects.remove(item)
#================== building helix

元記事を表示

pythonとかをbatファイルから実行してみた

# batファイルでCとかpythonとかを実行する
この頃寒いですね。
## なんでそんな面倒なことを
え?なんで?そりゃぁ、ねぇ、、、夢ってやつ?
あ、多分詳しいやり方とかはご自分でググったほうがわかりやすいかと。
あくまでも自己満なので。
## やってみた
まずbatファイルから。
c言語の実行↓(オプションなどは随時書き換えるしかないです。~~とゆうか誰も使わないか~~)

“`vb
@echo off
gcc %1
a
“`
pythonの実行↓

“`vb
@echo off
python %1
“`
今回実行してみたコード(C言語&python)

“`c
//test.c
#include

int main(){
printf(“OK!! this is c”);
return 0;
}
“`

“`py
#test.py
print(“OK! this is python”)
“`

# 結果
できた!やったぜ。

“`vb
OK!! this is c
“`

“`vb
OK! this is pytho

元記事を表示

OTHERカテゴリの最新記事