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

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

virtualenvを使ったDjango開発仮想環境構築〜新規プロジェクト・新規アプリ作成と初期設定までの手順

# はじめに

まっさらな状態から仮想環境構築〜新規プロジェクト・新規アプリ作成・初期設定までの手順を忘れることがあるので残しておきたいと思います。

**Python3系と仮想環境構築ツールであるvirtualenvがインストール済みであることを前提条件とします。**

著者の環境は以下となります。

– MacOS Mojave 10.14.6
– Python 3.7.5
– Django 2.2

**予め、Djangoの各バージョンで対応しているPythonのバージョンを確認してください。**
https://docs.djangoproject.com/ja/2.2/faq/install/#faq-python-version-support

# virtualenvを使って仮想環境構築

まず任意の場所(デスクトップ)でこれから作成するプロジェクトを入れるフォルダを`mkdir`コマンドで作成。(今回例として名前をsampleprojectとする)
`cd`コマンドで作成したフォルダ内に入る。

“`
$ mkdir sampleproject
$ cd sampl

元記事を表示

文字列から読み込む

#背景
競技プログラミングとかは

“`
3 4 5
“`

とか

“`
3
4
5
“`

みたいなタイプの入力形式が多いので、どうしてもそっちに慣れてしまう。
入力で手間取るとモチベが下がるので、一応記録しておく。

#積を返す
“`python
def product(first):
ans = 1
second = first.replace(‘,’, ”)
List = list(map(int, second.split()))
for i in range(len(List)):
ans *= List[i]
print(ans)

product(‘3, 4, 5’)
# -> 60
“`
#文字列をカウントする
“`python
def frequency(first):
second = first.split()
third = list(set(second))
for element in third:
print(element, second.count(element), sep = ‘:’)

freq

元記事を表示

QuizKnockで取り上げられたLook-and-say Sequence (見て言って数列) をPythonで生成する

先日投稿されたQuizKnockさんの動画 [【東大】Google本社でGoogle入社試験に挑戦!](https://www.youtube.com/watch?v=7KaiPOou1As) で、 **Look-and-say Sequence(見て言って数列)** が取り上げられていました。
これは以下のように、初項を1として「前の項を読み上げた数字を並べたものが次の項になる」という規則で変化する数列です。

“`
1 = 1が1個 (One 1) → 1 1
1 1 = 1が2個 (Two 1s) → 2 1
2 1 = 2が1個,1が1個(One 2, One 1) → 1 2 1 1
1 2 1 1 = 1が1個,2が1個,1が2個…
“`

今回の動画で初めてこの数列の存在を知り、面白いと思ったので
この数列を生成するプログラムをPythonで作成してみました。

“`python
def lookAndSay(initialValues, maxIteration=None):
x = initialValues
yield x

元記事を表示

pyenvを使って、python3.xを構築しよう

## pyenvとは
複数のPythonバージョンを簡単に切り替えられるツール

## 環境構築の手順
1. Homebrewをインストール
2. pyenvインストール
3. pyenvのパスを通す
3. python3.6をインストール
4. python3.6を適用

## 1. Homebrewをインストール
HomebrewとはmacOS用パッケージマネージャーで、pyenvのインストールをするために必要なのでインストールします。Homebrewを使えば、pyenv以外にも、phpやmysqlなどを入れることができます。
Homebrew公式ページ: https://brew.sh/index_ja

“`
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`

## 2. pyenvインストール
pyenvはpythonのバージョン管理ツールです。

“`
brew install pyenv
“`

## 3. py

元記事を表示

pythonで背景が透明な文字や画像をウィンドウ枠なしで表示させる

## 動作環境
Windows10
PyCharm
python3

## やりたいこと
・ソフトウェアを起動させるときに画像を表示させたい。
・画像を表示させるときは、ウィンドウの枠を表示させたくない。
・画像を表示させるときは、画像の背景は透明にしたい。

## それをスプラッシュスクリーンといいます
[スプラッシュスクリーン](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3)とは、ソフトウェアを起動させるときに表示される画像のことを言います。

## 困ったところ
・tkinterで作ったウィジェットのmainloopが抜けられなくて困りました。結局、destroy()ではなくて quit()を使えば上手く行きました。

## コード
スプラッシュスクリーンで文字を表示させる場合の例です。

“` python3
import tkinter
import win32a

元記事を表示

AWS Lambda のタイムアウト発生時に別の Lambda 関数を起動し、元の Lambda 関数の処理内容を取得する

#はじめに
こんにちは。はじめまして。
最近、AWS で本番稼働する時のことをかんがえるようになりました。
Lambda の負荷テストをしていると、タイムアウトが発生して「コマッタ…」となった時のことを書いてみます。

#Lambda タイムアウト 15分問題

Lambda ってタイムアウト時間設定しなくちゃいけなくて、最大 15分しか設定できないんですよね。
(参考)
https://aws.amazon.com/jp/blogs/news/aws-lambda-timeout-15min/

で、15分以上処理しちゃうと、CloudWatch にタイムアウトのログを出すだけ… と。

まあ、Lambda に重たい処理をさせるな!ということでしょうけど、
もう作ってしまったし… なんとかできないものか…
せめて、ユーザに処理できなかったことを伝えられないものか…

#対策

ちょっと調べてみると、色々と対策はある模様。

– [タイムアウトでエラーとなってしまったLambdaのリカバリを行うLambdaを作成してみました](https://dev.classmethod.jp/se

元記事を表示

【pandas】dataframe同士の結合時の注意

# 謎
類似記事を取得する関数を作っていたときに、なぜか結果が2回出力される。

“`Python:実行プログラム
for index, row in df3.iterrows():
result = model.docvecs.most_similar([model.infer_vector([texts[490]])], topn=5)
print(result)
“`

“`Python:結果
[(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.39392682909965515)]
[(61986, 0.4148428440093994), (93717, 0.40714001655578613), (67228, 0.39675790071487427), (18714, 0.39518919587135315), (71296, 0.3939268

元記事を表示

WagtailでRichTextFieldを表示すると

タグがついてしまう

# RichTextFieldを表示しようとすると、HTMLタグが表示されてしまう
とても初歩的な問題かもしれませんが、RichTextFieldを表示しようとして

“`html:html
{{ page.body }}
“`
このように、HTMLファイルでCharFieldなどと同じように書いてしまうと、

“`

body content

“`

このように`

`タグも表示されてしまいます。

# 解決方法
“`html:html
{% load wagtailcore_tags %}

{{ page.body|richtext }}
“`
このようにrichtextフィルターを使って書くことで、

“`
body content
“`
`

`タグをなくして表示できました。

元記事を表示

【Python】合計がXになる整数の組み合わせを出力する

Output the number of combinations that add up to 10.

“`python

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def get_integral_value_combination(list, target):
def a(idx, l, r, t):
if t == sum(l): r.append(l)
elif t < sum(l): return for u in range(idx, len(list)): a((u + 1), l + [list[u]], r, t) return r return a(0, [], [], target) print get_integral_value_combination(list, 10) ``` results ```terminal $ python test.py [[1, 2, 3, 4], [1, 2, 7], [1

元記事を表示

Tkinterで色々な背景の色を表示して比較したい

## 動作環境
Windows10
PyCharm
Python3

## 目的
Tkinterの背景色を色々と比較して確認したいが、効率的に確認する方法はないか考えて以下のコードを作成しました。自分の好みの背景色を探すときに使えるかも。

## コード
“` python3
import tkinter as tk

def main():
root = tk.Tk()
root.title(“色々な背景の色を表示するサンプル”)
root.window_width = 400
root.window_height = 500
root.geometry(str(root.window_width) + “x” + str(root.window_height) + “+100+100”)
f1 = tk.Frame(root, relief=tk.RIDGE, bd=2)
arr = [‘grey’, ‘LightGrey’, ‘azure’, ‘snow’, ‘wheat’, ]
for color in arr

元記事を表示

【Kivy】PycharmでKivyを編集するメモ【Python】

#結論
このURLのjarファイルを取ってくる
https://github.com/Zen-CODE/kivybits/tree/master/IDE

Pycharmを開いてファイル→インポート→Pycharmの再起動で完了

元記事を表示

pythonでtqdmを使って進捗を可視化する

どうもテルルです

今回はpythonで処理の進捗を可視化したいときに便利なモジュールを発見したので

紹介したいと思います

## 環境

Mac OS Catalina 10.15.1
python 3.7

## 状況

pythonを使っててcやc++と比べて遅い割に機械学習やスクレイピングをするときに

結構時間がかかる思い処理ってあると思うんですよ。

そう言った処理を走らせてるときに何も表示されないと待っていても苦痛なので

今回は進捗を可視化するモジュールを触っていこうと思います

## インストール

“`
pip install tqdm
“`

いつも通りpipコマンドで打ち込みます

## 進捗バーを表示させる

使い方は簡単でtqdmにイテレータブルなオブジェクトを引数で渡すだけです

“`
from tqdm import tqdm
from time import sleep

for i in tqdm(range(100)):
sleep(0.1)
“`

これを実行してみるとターミナル上に進捗を表すプログレスバーが出ました

元記事を表示

DjangoのModelAdminでlist_displayの項目をリンクにする

# やりたかったこと
DjangoのModelAdminで、list_displayのある項目をリンクにしてその項目の詳細ページに飛べるようにしたかった。

# list_displayの項目をlinkにする方法
例えば、リンクにする前のコードがこんな感じだったとする。

“`python
from django.contrib import admin

class FooModelAdmin(admin.ModelAdmin):
list_display = (‘foo’,’bar’)
“`
上のコードで、list_displayの’foo’をリンクにしたいときは、以下のようにする。

“`python
from django.contrib import admin
from django.utils.safestring import mark_safe

class FooModelAdmin(admin.ModelAdmin):
list_display = (‘foo’,’bar’)

def foo_link(self, obj):

元記事を表示

Prometheus client_python tips – 複数の対象のmetricsを作る方法

# Overview

Prometheusには様々なexporterがあるが、APIを作ったりして
独自のmetricsを生成したい場合は、client libraryを使うようになっている。

– https://prometheus.io/docs/instrumenting/clientlibs/

従ってpythonにもそれ用のlibraryがあり、それが[こちら](https://github.com/prometheus/client_python)。
基本的にはGaugeを使って作れば良いのでだいたい以下のようなコードになる。

“`python
#!/usr/bin/env python3
# import os
import sys
import re
from logging import getLogger
from prometheus_client import generate_latest
from prometheus_client import Gauge
from prometheus_client import REGISTRY
logger

元記事を表示

Pythonでscikit-learnがinstallできない

# 環境
Python3.8.0

# 概要
ざっと見た感じ

“`
No module named ‘Cython’
“`

これと、あとNumpyを先に入れていたせいでバージョンの依存関係でエラーが出たっぽい。

ので

# 解決策

“`
pip3 install Cython
pip3 install -U scikit-learn
“`

-Uつけるとすでに入っているライブラリとの依存関係をいい感じにしてくれるっぽい??

# 参考文献
https://scikit-learn.org/stable/install.html

元記事を表示

Ubuntu18.04にPython3系の環境を構築する。

WebArena Indigoのユーザー名は

“`sh
Ubuntu
“`

である。パスワードはなし。
https://web.arena.ne.jp/indigo/spec/security.html

そのままではPython3系が入ってないので以下を入れる。

“`sh
sudo apt install python3.7
“`

pip3が入ってないので以下を入れる。

“`sh
sudo apt install python3-pip
“`

あとはsudo pip3 install ○○で以下をインストールしていく

“`sh
sudo pip3 install requests
sudo pip3 install pyyaml
sudo pip3 install pandas
sudo pip3 install websocket-client
sudo pip3 install sortedcontainers
sudo pip3 install matplotlib
“`

元記事を表示

docker-compose upでPythonのログが出力されない

## 結論
`-u`オプションで解決した

“`yaml:docker-compose.yml
command: python -u main.py
“`

## 経緯
以下のようなファイルをdocker-compose.ymlの`command`に指定したらログに何も出力されなかった。[^1]

[^1]: 「動作しない」ではなく「出力されない」だと気付くのにもだいぶ時間かかった

“`python
import time

print(‘hoge’)

while True:
print(‘fuga’)
time.sleep(1)
“`

原因調査のために部分的に切り分けていきます。

[^2]: `import`文を削除したら出力されることがあったが、これはエラーによってその行で動作が停止しただけだった

* `docker-compose run`だと動作する
* `docker-compose run python bash`で入ったbash内で立ち上げたpythonインタプリタ内でも動作する

最終的にpythonスクリプトを何行かづつコメントアウトしたりし

元記事を表示

空の色を自由に変えたいなあ

# 初めに
何週間か前に学校の授業の演習で深層学習で面白いものを作ってくださいというのがあったんですが、そこでGANと戯れる機会がありました。実際に、作ったものはこれとは別の物です。今回紹介するのは演習の途中経過があまりに悪くて保険のために作ったけど、結局本題のものがギリギリできたので使わなくなってしまったものです。それの供養を行いたいと思います。

# 手法
今回扱ったのは、GANの中でも画像生成を無から行うものではなく、ドメイン変換です。簡単にいうと、〜風の画像を別の〜風の画像に変換する手法ということですね。

## モデル
StarGANというモデルを今回は使いました。StarGANとは何ぞという人のために軽く説明をします。

画像の変換を行うGANの種類はDiscoGANやDCGANなど色々ありますがほとんどのものは下に示すように1対1対応の画像変換しか行いません。そのため、複数の種類に変換したい場合は、変換先の数だけモデルの学習を行わなくてはなりません。
![Screenshot from 2019-11-27 22-58-53.png](https://qiita-imag

元記事を表示

Pythonで数字to漢数字の変換

# きっかけ
テストケースで1郎2郎3郎…みたいなのを作ってたんですが、
名前にアラビア数字というのもいかがなものかと思いまして、変換してやるようにしました。

# int2kanint
`python3.7.5`で動いてます

“`python:int2kanint
# -*- coding: utf-8 -*-

import csv

def int2kanint(num) :
suji = [“”,”一”,”二”,”三”,”四”,”五”,”六”,”七”,”八”,”九”]
kugiri = [“”,”十”,”百”,”千”]
tani = [“”,”万”,”億”,”兆”,”京”,”垓”,”?”,”穣”,”溝”,”澗”,”正”,”載”,”極”,”恒河沙”,”阿僧祇”,”那由他”,”不可思議”,”無量大数”]

num = list(map(int,list(str(num))))
kansuji = []

for k, v in zip(range(len(num)), reversed(num)) :
keta = []
keta.append

元記事を表示

JSON ファイルを http サーバーにアップロード

Python の cgi で JSON ファイルをアップロードする方法です。
この例では、アップロードしたファイルが、
/var/tmp/json/example.json
に書き込まれます。

サーバーサイドの処理

“`py:json_receive.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# json_receive.py
#
# Nov/23/2019
#
# ——————————————————–
import sys
import os
import string
import json
import fcntl
import cgi
import cgitb
cgitb.enable()
#
# ——————————————————–
def file_write_p

元記事を表示

OTHERカテゴリの最新記事