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

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

【python3】AttributeError: partially initialized module ‘XXX’ has no attribute ‘make’への対処

## 環境
Windows 10 Home
python 3.10

## 状況
小さなコードをテスト実行中に遭遇した。
その時のコードと、実行したときのエラー内容を以下に示す。

“`gym.py
import gym

env = gym.make(‘Pendulum-v1’)
env.reset()

for i in range(20):
action = env.action_space.sample()
state, reward, done, info = env.step(action)

print(f”action:{action}, state:{state}, reward:{reward}, done:{done}”)
“`

“`
Traceback (most recent call last):
File “C:\Users\work\gym.py”, line 1, in
import gym
File “C:\Users\work\gym.py”, line 3, in

元記事を表示

Pytorchのバージョンを確認、GPUの情報をワンライナーで確認

Pytorchのバージョンを確認

“`
python3 -c “import torch; print(torch.__version__);”
“`
GPUを使えるかどうかを確認

“`
python3 -c “import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0));”
“`

元記事を表示

WSLでPythonのGUI表示をどうにかする

# WSLでGUI表示したいという話
こんな話,インターネットの海には無限に転がっている
転がっているからといってできるとは言ってないのがこの分野ですよね

以前にWSLのUbuntuからPyQt5で作ったアプリを立ち上げようとして,GUI周りで挫折したので,今回はリベンジ ~~(コマンドプロンプトはやっぱり作業しづらい)~~

## 環境
* Windows10
* WSL1(Ubuntu)
* Python3.7→3.8

## とりあえず実行しようとしてみる

GUIの基本(?)「とりあえず画面を出す」をするため,matplotlibを使ったプログラムでグラフを画面出力しようとしてみると…
エラーが出た

“`shell
WSL UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
“`

とりあえずこちらを参考にVcXsrvを導入

https://qiita.com/rhene/items/ff11c7850

元記事を表示

AWS VPCをプライベートサブネットか判定して作成するスクリプト

#普通にVPC作成すると、プライベートサブネットかどうかをバリデーションしてくれない
Amazon VPCはAWS上に構築するプライベートなネットワーク空間のことです。
ですが作成時にプライベートサブネットかどうかをバリデーションしてくれません。:weary:
意図せずパブリックなIPレンジでもVPCを作れてしまいます。
そのためプライベートサブネットか判定して作成するスクリプトを作成してみました。

python3の標準モジュールであるipaddressモジュールが凄く便利です!

# 開発環境
Python3.8.7
#実装
(IAMユーザー作成、aws configureは割愛します)
例:VPCのCIDR 172.32.0.0/24 をboto3testのNameタグで作成しようとするとき

“`python
import boto3
import ipaddress

CIDR = ‘172.32.0.0/24’

def create_vpc(CIDR):
client = boto3.client(‘ec2’)
response = client.c

元記事を表示

Python 例文集

# Python で使える例文集

自分用の備忘録として。

## API への問い合わせ

### API に問い合わせ、結果の JSON を dict 型として読み込む場合

返ってくる値は`レスポンスオブジェクト`。格納される主な属性は以下の通り。

– `status_code`: レスポンスのステータス(200など)。str 型
– `headers`: レスポンスヘッダ。dic 型
– `text`: レスポンス文字列本体。

“`py
import requests
import json

# API クエリをそのまま渡す場合
def get_malApi_response(arg):
url = ‘https://example.com/api/’
param = arg # arg = get/detail
res = requests.get(urlrl + param)
data = json.loads(res.text) # text 属性のデータを dict 型に変換

return data

# API ク

元記事を表示

Django modelformsetにはまった人

# 初めに
複数の同じformを入力する際にformsetを使用し実装を行うときにいくつかハマったので
メモを残す。

# 例:
以下のコードが今回formsetを使用するmodel, form, viewです。
内容は適当なので気にしないでください。

“`python

# model
class User(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(null=False, max_length=100)

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

# form
class UserForm(forms.ModelForm):
use_required_attribute = False

name = forms.CharField(…)

元記事を表示

FastApiで静的ファイルをマウントする

## 概要
– FastApiで静的ファイルを表示するときの備忘録
– index.htmlを自動で読み込みたければ設定が必要

## 構成
“`
.
├── main.py
└── static
├── favicon.ico
├── index.html
└── static
├── css
└── js
“`

## 静的ファイルのマウント
`StaticFiles`をimportしてdirectory指定することでマウントできます。
ただし、このままだと`/static`にアクセスしても`index.html`は表示されません。

“`python:main.py
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

app.mount(“/static”, StaticFiles(directory=”static”), name=”static”)
“`

### 対応方法
HTMLモー

元記事を表示

Ubuntu18.04 + pyenv + pipenv + Django + Apache2 なデプロイ その1

その0でサーバーの初期設定的な部分の実装は完了しているので,必要なライブラリ類をインストールしていきます.
今後は基本的にrootユーザー(`ubuntu@xxx-xxx-xxxxx`とか`root@xxx-xxx-xxxxx`)でログインすることは無いと思います.設定で禁止しているし.

#必要ライブラリ群のインストール
##いろいろインストール
`curl`とか`wget`とかがあるので,ソースコードハンドリング周りのいろいろなライブラリ群じゃないですかね,知らんけど.

“`
ttimes@xxx-xxx-xxxxx:~$ sudo apt install -y gcc make build-essential libssl-dev libffi-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev liblzma-dev
“`

##gitのインストール
pyenvはg

元記事を表示

Python3: psycopg2 のエラー対策

PostgreSQL に接続するライブラリーの psycopg2 を使っていてエラーが出た時の対策です。
Ubuntu 21.10 での対策です。

エラーメッセージ

“`text
FATAL: Peer authentication failed for user
“`

次のファイルを編集します。

変更前

“`text:/etc/postgresql/12/main/pg_hba.conf
(省略)
local all all peer
“`

変更後

“`text:/etc/postgresql/12/main/pg_hba.conf
(省略)
local all all trust
“`

PostgreSQL の再起動

“`bash
sudo systemctl restart postgresql
“`

元記事を表示

Treat of Ticks ~軸目盛りにいたずらするぞ~

# 内容
`matplotlib`で`ax.imshow(img)`をするときに、軸目盛りを調節します。

“`python
import matplotlib.pyplot as plt
import numpy as np

img = np.random.random((100,100))

fig, ax = plt.subplots()
ax.imshow(img)
plt.show()
“`

![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/498394/33f60b57-1b66-4224-69e6-5e90025bf961.png)

この状態だと、x軸目盛り、y軸目盛りはそれぞれ要素数になっています。
ここから、y軸目盛りをいじっていきます。
手順としては、

* `ax.set_ytick()`を用いて目盛りをつける要素番号を指定
* `ax.set_xtick()`を用いて目盛りの各値を指定

この際、それぞれのメソッドに与える配列の長さは揃えます。

“`pyt

元記事を表示

【Python】最大長が決まっているqueueが欲しい時は

Pythonでqueue構造を使うにはqueue.Queue()があります。
しかし、これはqueueの長さを一定までにして、それを超える場合には古いものからdequeしたい場合には少々面倒です。
[リファレンス](https://docs.python.org/ja/3/library/queue.html)によると
queue.Queue()の引数で最大長が決められますが、queueがいっぱいの時は例外を送出し、
新規挿入はqueueが空くまでブロックするようです(待機させる)。
また、現在の要素数を得ようとしてもQueue.qsize()というメソッドはありますが、これは長さの近似値を返すのみです。
長さを一定にしたい場合はかなり処理が面倒になります。

#ではどうするか
collections.deque()を使うと、すぐに今回ほしい形のqueueが得られます。

“`python:dequeの例(最大サイズ3)
import collections
q = collections.deque([], 3)

for i in range(5):
q.append(i

元記事を表示

kivyMDチュートリアル其の肆什 Components – Tabs篇

ハロー、ワールド!みなさん開発してますか?(言い方としてはセコムのように)

はい、ということで今日も懲りもせずKivyMDのお時間が参りました。ちょっと使い方は
違うのですが、前に失敗して痛い目をして繰り返すという意味においては間違いではなか
ろうかと思います。

https://www.weblio.jp/content/%E6%87%B2%E3%82%8A%E3%82%82%E3%81%9B%E3%81%9A

今週のニュースはというと、やっぱり選挙のことではないでしょうか。このページも投稿
するころにはもう結果も出ているのではと推測するばかりです。そんなことはないかな。
結果の方も注目したいところです。ITエンジニアに勤務助成金とか出すよと言っている
党にはすぐさま投票したいばかりです。ほんと出ないかなぁ。

馬鹿なことを言っていますが、助成金を獲得できるためにも(無理)私たちはガリガリ
コードを書くしかありません。ということで今日も元気にやっていきましょう。今日は
タイトルにもある通り、Tabs篇となります。

## Tabs

一旦気持ちを震わせてはいましたが、マテリアルデ

元記事を表示

【Python】2次元リストの行と列を入れ替える(転置する)

#概要
競技プログラミング中に必要なり、調べてみました。
2次元リストの行と列を入れ替える(転置する)には、リストのアンパックと組み込み関数のzip()をうまく使います。
zipは組み込み関数なので何かをimportする必要はありません。
実際のコードは以下のようになります。

“`python:zipの使用例
#元のリスト
list_org = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
print(list_org)

#転置
list_transposed = [list(x) for x in zip(*list_org)]
print(list_transposed)
“`

出典:
nkmk note様

https://note.nkmk.me/python-list-transpose/

#解説
“`python
list_transposed = [list(x) for x in zip(*list_org)]
“`
の行が転置を行っています。
*list_orgのようにリストの前にアスタリスクをつけると「アンパック」という処理が行

元記事を表示

JupyterLab Desktop Appのインストールで困ったこと

#1 はじめに
 JupyterLab Desktop App([紹介ページ](https://www.publickey1.jp/blog/21/jupyterlabjupyterlab_apppython.html))をインストール後、アプリを実行すると以下のエラーメッセージが出た。この解決策(自分の場合)を備忘録として残す。

**[エラーメッセージ]**
qiita-square

#2 現象の説明

* JupyterLab Desktop App を以下のサイトを参考にインストールした。

JupyterLab Desktop Appのインストールと始め方(Windows)

* このときのインストール環境は以下のとおり

| 項目 | 内容 |

元記事を表示

Ubuntu18.04 + pyenv + pipenv + Django + Apache2 なデプロイ その0

ローカルではゴリゴリに動いているDjangoアプリケーションをデプロイするときに,何度も何度も失敗して悲しい思いをしたので自分用にまとめます.お察しの通りあんまりLinuxサーバに詳しいわけではないので,間違ってオジャンにしても責任取れません.悪しからず.
さくらVPSを利用して環境構築していきましょう.
タイトルにもある通り,Ubuntu18.04をインストールしてあり,Windows10からTeraTermで接続します.
さくらVPSのダッシュボードからサーバーにOSをインストールする時のナンチャラ=カンチャラはデフォルトのままでOKだと思います.

結構長くなったので分けて書いていきます
[その1](https://qiita.com/drafts/633055f69503aec96156/)

# いつもの
“`
ubuntu@:~$ sudo apt update
ubuntu@:~$ sudo apt upgrade
“`

# rootユーザーにプレインパスワードで接続し続けるのは絶対ダメ!
玄関のドア全開で,家の鍵を玄関のど真ん中に置いたまんまにしとくぐらい危ない

元記事を表示

Pythonで開発をするための準備

いざPythonで開発をしてみようと思った時に準備したまとめ。
# 環境

– OS: macOS 12.0.1
– Shell: zsh

#1. Pythonのバージョン確認
Macには標準でPython2とPython3がインストールされています。
過去の経緯などでPython2を使う必要がある人もいることを考慮してくれているのだろうか。
これから触り始めるのでここではPython3向けに進めます。

“`:python3
$python3 –version
“`
これでバージョンが調べられます。

“`:結果
Python 3.8.9
“`

ちなみに、Python2のバージョンを調べたい時はpython3の部分をpythonに変えればOK。

#2.Pythonライブラリのアップデートとインストール
PyPI(Python Package Index)からライブラリをインストールするためにpipといるツールを使用します。

ターミナルからpipコマンドを実行するのですが、使用している環境ではpipはcommand not foundになります。この環境ではpipで

元記事を表示

SharedMemoryを使ってnumpy配列を共有しmultiprocessing.Poolで並列処理する

# はじめに

Python3.8から`multiprocessing.shared_memory.SharedMemory`をつかってプロセス間でのメモリ共有が可能になっている。メモリ共有したnumpy配列を`multiprocessing.Pool`を使って並列処理する方法を記載する。

以下記事を一部参考にした。そこでは`mulriprocessing.Process`を使う場合について記載しているが、ここでは`multiprocessing.Pool`を使う場合についてが主な話題となる。

https://atsuoishimoto.hatenablog.com/entry/2019/09/09/082554

# 準備

共有するnumpy配列は`np.uint8`型で1000行1000列の行列とする。
このとき確保する共有メモリの大きさは、1000 x 1000 x np.uint8型の大きさであり次の`sz`値となる。

“`python
import numpy as np

sz = np.prod ( 1000, 1000, np.dtype ( ‘uint8’

元記事を表示

AOJトライに関する知識知見の記録共有 (Volume0-0041)

# 概要
Expression

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0041

# コード
TIPS:再帰処理により可変長引数に対応

“`
import itertools

def apply_op(op, args):
a, b = args[:2]
if op == “+”:
return a + b
elif op == “-“:
return a – b
elif op == “*”:
return a * b

def gen_list_histresult(hist, args):
if len(args) == 1:
return [[hist, args]]
else:
ret = []
for v in itertools.permutations(args):
for op in [“+”, “-“, “*”]:

元記事を表示

自然言語処理で日本語の学術要旨(日本アミノ酸学会)を分類分けする。その1

#背景
[日本アミノ酸学会第15回学術大会](https://15th-jass2021.com/program/)にて自然言語処理を応用した発表をおこないました。内容は日本「アミノ酸学会の要旨(約30年の要旨約900報)をPython使って分類してみたら、学会の発表内容の変遷が分かってきたよ」というものです。これほど多量かつ専門用語が盛りだくさんのコーパスで自然言語処理することはとっても稀有な体験なので私も勉強になりました。学会に参加した方がコードを見たいということなので紹介させていただきます。詳細データをお示しすることができないため、**学会に参加していない方は意味不明な記事になってしまうことをご了承ください。**

#作業環境
windows10のpython3.7.1です。

#全体の流れ
以下のような順序で作業を実施したのですが、今回は一番の肝になる後半の「研究要旨の高次元ベクトル化、次元削減とクラスタリング」の部分をご紹介します。大部分はQiitaの[SCDV法に関する記事](https://qiita.com/fufufukakaka/items/a7316273908a

元記事を表示

仮想環境のJupyter上で異なる仮想環境のカーネルを使う

#概要
* Jupyter labを立ててる仮想環境上で、違う仮想環境のカーネルを使う

作業環境

>* python3.8
>* venv
>* Windows PowerShell(基本的なコマンドは環境で変わりません)

#はじめに
カーネルを追加する際に、ちょっと戸惑ったので備忘録として残しておきます。
どのサイトも割と`pip`で`ipykernel`を追加する記載しかなかったので、初めての人向けに紹介したいと思います。

参考サイト
>* [Jupyter Notebookでカーネルを増やそう](https://qiita.com/SaitoTsutomu/items/a3d27a2de1ff3e762771)

#メイン
まずは、新たにカーネルを追加した仮想環境上で`jupyter`をインストールします。
`jupyter`をインストールすると`ipykernel`も入ってるので、個別にインストールする必要がなくなります。
また`ipykernel`だけインストールしても、もちろんエラーを吐くので、個人的には`jupyter`のインストールだけのほうが楽ですね。

元記事を表示

OTHERカテゴリの最新記事