Python関連のことを調べてみた

Python関連のことを調べてみた

pipでコマンドをインストールしようとすると「venvしろって!」怒られてうざい人向けのtips

# TLDR;
しょうもないコマンドをpipで入れたい時はDockerを使うと良い.

# 何
いつからかpipで公開されている便利コマンドを入れようとすると,「OS標準のPython環境を壊すな!」って言われる.

“`
$ pip3 install rfcbibtex
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.

If you wish to install a Python library that isn’t in Homebrew,
use a virtual environment:

python3 -m venv path/to/venv
source path/to/ve

元記事を表示

VSCode上のPython仮想環境設定 for Mac

# はじめに
こんにちは。@bdrccです。
図書館で思いがけず、Flaskの参考書を見つけました。

その本の中に、VSCode上のPythonの仮想環境のインタープリター設定方法が記述されていました。
しかし、Windowsでの設定だったため、Macを利用する初心者向けにメモを残します。

# 環境
– MacBookAir M3チップ
– VSCode(Pythonの拡張機能をインストール済)
– Python 3.12.0
– フォルダ構成は以下の通り
“`
pyworks
└──try_flask
├──blogproject (.pyファイルを格納)
└──web_f             (仮想環境もろもろ)
“`

# やったこと
1. blogprojectフォルダではなく、try_flaskフォルダをVSCodeで開く
2. 右下のPythonのバージョンをクリック
3. 「Enter interpreter path…」をクリック
4. 「Find…」をクリック
5. ポップアップから、仮想環境フォルダ名/bin/python3.1

元記事を表示

boto3を使ったathenaへのクエリ投入

# 事前準備
– ライブラリであるboto3をインストールしているか
– .awsフォルダ直下にアクセスキー情報を配置しているか
– configファイルとcredentialsファイルは以下のような記述となる

“`config
[あなたの環境]
region = “あなたのリージョン”
output = “あなたの設定する記述フォーマット”
“`

“`credentials
[あなたの環境]
aws_access_key_id=”あなたのアクセスキー”
aws_secret_access_key=”あなたのシークレットアクセスキー”
“`

# コード例
– クエリを記述し、pythonからathena上でクエリを実行する
– 基本的にはクライアントの作成、athenaクライアントの設定、実行したいクエリの記述、クエリの実行という段階に分けられる
– 実行したクエリの確認をするため、クエリの実行IDを取得している

“`boto3.py
# 各種設定
import boto3

# boto3セッションを使用しクライアントを作成
sessino = bo

元記事を表示

リリース: Python製作図ライブラリ Drawlib

## 概要

Drawlib というPythonでイラストを描画するための機能豊富なライブラリを作ってリリースしました。
Pythonを知っていれば新しいことを覚えなくてもすぐに使えますし、IDE(VSCodeなど)がコード補完やヘルプ表示で書くことを支援してくれます。
GitHub などでドキュメントなどのイラストをコードとして管理するのに便利なはずです。
Illustration as Code !!

Drawlib では以下の画像のようにコードからイラストを作成します。

![image_about2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65787/bb88b179-c770-55b1-feee-5afc7706ecd2.png)![image_about1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65787/d8c641b9-90f2-f53b-67d9-cfc964c193ee.png)

元記事を表示

Python3.12でPerfをとってみた

Python3.12からPythonスクリプトでPerfが取れるようになったそうなので試してみました。

### 事前準備

システムのPythonがPerfに対応しているかは`sysconfig`の`PY_HAVE_PERF_TRAMPOLINE`を確認するとわかるようです。

“`console
$ python3 -m sysconfig | grep HAVE_PERF_TRAMPOLINE
“`

また、Perfを使うためにシステムの`kptr_restrict`と`perf_event_paranoid`を変更しておきます。

“`console
$ echo 0 | sudo tee /proc/sys/kernel/kptr_restrict > /dev/null
$ echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoid > /dev/null
“`

筆者の環境ではPythonのバージョンが古かったのでアップデートしました。(今回はPython3.12を[CPython](https://

元記事を表示

会社の先輩にVScodeかCursorを使ってMacのローカルでPythonのスクリプトをデバッグ実行する方法を教わった体験記

## 概要

会社の先輩にVScodeかCursorのエディタを使ってMacのローカルにあるPythonのスクリプトをデバッグ実行する方法を教わったので体験記としてまとめる。

## 前提

– 下記の内容が完了していること

https://qiita.com/miriwo/items/3f515e378d517cd7d5b7

– デバッグ実行は上記の記事で定義しているtest.pyを用いる

## 方法

1. VScode もしくは Cursorにて「[Python Debugger](https://marketplace.visualstudio.com/items?itemName=ms-python.debugpy)」という拡張パッケージをインストール(おそらくPython Debuggerを入れるとPythonの拡張機能も勝手に入るはず。)

![CleanShot 2024-07-13 at 09.34.20@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/

元記事を表示

MacのローカルでPythonのスクリプトを実行する

## 概要

MacのローカルにてPythonのスクリプトファイルを実行してみる。

## 前提

– 下記の方法でPythonの3.10.0がMacに入っており、実行できること

https://qiita.com/miriwo/items/3f515e378d517cd7d5b7

– 実行するPythonのコードは下記で、test.pyというファイルで任意のディレクトリに設置されているものとする(10回ループを繰り返し、インデックスが奇数か偶数かを出力するコード)

“`test.py
def loop_and_print():
for i in range(10):
if i % 2 == 0:
print(f”{i}は偶数です”)
else:
print(f”{i}は奇数です”)
print(“ループが完了しました”)

loop_and_print()
“`

## 方法

1. 「前提」

元記事を表示

知財のあれこれをPythonで何とかする

1.ファミリを何とかする(その2)

特許の「ファミリ」、すなわち最初の出願を基礎出願とした外国出願や分割出願をまとめたもの、の取り扱いに関して、評価等何らか作業を行おうとするのであれば、まずはどの特許がファミリに含まれるか?を把握しないといけません。
ファミリの情報は日本特許のファミリであれば日本特許庁の運営している「J-platpat」外国特許のファミリであれば欧州特許庁の「Espacenet」をアクセスして取得できます。
しかしながら特許の件数が増えるとファミリを把握するだけで結構手間がかかってしまいます。今回は日本特許のファミリを把握する作業を少しでも容易にできるような処理方法を紹介したいと思います。

2.今回やろうとしていること
2-1.今回やろうとしていることは「J-platpatで表示させた分割出願のページの、登録番号の情報だけを抜き出す」ことになります。
手作業としては「J-platpatをアクセスして出願番号、公開番号、登録番号のいずれかを入力、分割出願のページを表示させ、登録番号を含むテキストデータをコピペする」ここまでは手作業です(ロボットアクセスは禁止されてい

元記事を表示

ろうとるがPythonを扱う、、(その24:IPアドレス情報)

# プラットフォーム共通でIPアドレス情報+αを表示するプログラムをPythonで作成しようとして、結局GiveUp

機器に割り当てられている、IPアドレス、Link Up/Downなどの情報をプラットフォーム共通(ここでは、Linux、Windows、MacOS)のPythonプログラムを作成しようとして、結局のところできずじまい、、、という経緯を記録として残す。

## 固有モジュール
Windowsでは、「[ろうとるがPythonを扱う、、(その11:Python+tkinterにてIPアドレス設定 )](https://qiita.com/infinite1oop/items/753645415b65a97c897c)」でも使った
– [WMI(Windows Management InstrumentationWindows Management Instrumentation)](https://pypi.org/project/WMI/)

を使うと、Windowsから各種情報が取得できる。

Linuxでは
– [pyroute2](https://pypi.org/

元記事を表示

えっ?Google Colabは使い捨てLinuxじゃないの?

# はじめに
みなさんはGoogle Colaboratory(略称:Google Colab・Colab)を使ったことがありますか?

https://colab.research.google.com/#

Googleアカウントさえあれば、誰でも・いつでもPythonの実行環境を手に入れられる、凄く便利でありがたいサービスです。有料プランもありますが、基本的に無料の状態で困ることはありません。

今回はこのGoogle Colabを使い捨てLinuxとして利用する方法を紹介します!

# 使い捨てLinuxとして使う
実はGoogle Colabでは、Pythonのプログラムだけでなく、Linuxのコマンドも実行することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2921137/b397f98d-ea97-ad9b-1659-492a94063774.png)

行の先頭に「!」をつけると、その行はPythonプログラムではなく、Linuxコマンドとして実行されま

元記事を表示

Backlog の Wiki からチャットボットを作る

# 概要

Backlog の Wiki の内容を使って RAG (Retrieval-Augmented Generation) をしてみます。
使用言語は [Python](https://www.python.org) です。
主に使うパッケージは [LangChain (0.2.x)](https://python.langchain.com/v0.2/docs/introduction/) と [Streamlit](https://docs.streamlit.io) です。
AI は [OpenAI API](https://platform.openai.com/docs/api-reference/introduction) を使いますが、OpenAI パッケージを直接使うのでなく、LangChain の機能を通して使います。

:::note info
RAG とは、ChatGPT 等の生成 AI を使う時に、AI が学習していない情報 (社内資料など) を与えることで AI の知識を拡張する技術です。
参考: [RAG (検索拡張生成) とは?](ht

元記事を表示

【備忘】FediverseのWebhook送信先と公開範囲

忘れる度検索してるので覚書。

動作環境:Python 3.12.3

# Webhook送信先(エンドポイント)

## mastodon

マストドンベースインスタンスはこれ(Fedibird等)
“`
https://[インスタンスURL]/api/v1/statuses

例:
https://mstdn.jp/api/v1/statuses
“`

## Misskey
“`
https://[インスタンスURL]/api/notes/create

例:
https://misskey.io/api/notes/create
“`

# 公開範囲 (visibility)

| |公開|ホーム(未収載)|フォロワー|DM(※)|
|:-:|:-:|:-:|:-:|:-:|
|**mastodon**|public|unlisted|private|direct|
|**Misskey**|publ

元記事を表示

StableDiffusionをDiscord botで動かす

# はじめに
StableDiffusionをDiscordbotで動かせるようにしてみました。StableDiffusion WebUIはAPIで動かせるようになっているのでそれを使っています。
# Discordサーバー
操作したいパラメータごとにチャンネルを立てます。![スクリーンショット 2024-07-13 0.55.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680953/1b7cfcec-c3d2-53fa-2476-d213c369eccd.png)
これ以外に実行コマンドを送るのと、完成したものを貼るチャンネルを立てます(自環境ではrunにしている)。
# bot
https://github.com/akimax74/SDbot

トークンはpython-dotenvで保存しています。
パラメーターのチャンネルに値を送ると、txt2imgの実行用のjsonファイルが更新されます。
それを実行用チャンネルに適当にメッセージを送ると生成開始され完成したらそのチャンネルに画像を貼

元記事を表示

pycharmショートカットまとめ (python) 

#### Pythonコード編集をpycharmで行うときのショートカット集です。


## 目次

目次をを表示/非表示にする

– [はじめに](#はじめに)

– [0. PyCharmの画面構成](#0-pycharmの画面構成)
– [1. PyCharm立上げ ⇒ Welcome画面でのプロジェクト選択](#1-pycharm立上げ–welcome画面でのプロジェクト選択)

– [2. ウィンドウ間の移動操作](#2-ウィンドウ間の移動操作)
– [2.1. 隣接するToolウィンドウ間の移動操作 (PyCharm編集画面)](#21-隣接するtoolウィンドウ間の移動操作-pycharm編集

元記事を表示

【強化学習】全く新しい手法で最難関ゲームMontezuma’s Revengeを攻略したGo-Exploreを解説・(実装)

この記事は自作している[強化学習フレームワーク](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d)の解説記事です。

https://github.com/pocokhc/simple_distributed_rl

# はじめに

ふと以下のAtariゲームのベンチマークを見ていたら Montezuma’s Revenge でかなり高いスコアを出していたGo-Exploreというアルゴリズムがあったので見てみました。
https://paperswithcode.com/task/atari-games

Go-Explore論文
・https://arxiv.org/abs/1901.10995
・https://arxiv.org/abs/2004.12919

背景が分かりませんがなぜか2種類あります。2020年頃の論文ですね。
ちなみにこの論文は概念的な話がメインで具体的な話はあまりなかったり…、記事も読み物っぽくなっています。

また私の所感は引用分で書いています。

# Go-Explore

強化学習の課題とし

元記事を表示

【Python】オブジェクトとJSONの変換ができるクラスを考える

ある同一のデータを別々のプログラミング言語で扱うといったケースは少なくないかと思います。例えば、API経由でのデータのやり取りや、データの加工や分析だけちょっとpythonを使いたいなどですかね。
そこで今回はJSON形式でのインターフェースとなるようなクラスをとりあえずpythonで用意できないかと考えました。

### 1. シリアライズ可能なフィールドを持つクラスの例
メインは`to_json`関数と`from_json`関数です
* `to_json` : 生成したオブジェクトからstringのjsonを生成します
* `from_json` : stringのjsonからオブジェクトを生成します
“`py
import json

class PersonClass:
def __init__(self, name, age):
self.name = name
self.age = age

def to_json(self):
return json.dumps(self.__dict__)

@c

元記事を表示

PythonでMarkdownテキストをPDF出力 in Google Colaboratory

ChatGPTのAPIを叩くと、結構な確率でMarkdownテキストが返ってきます。

エンジニアさんならこれで何も問題ないのですが

一般の事務の方や、営業の方が使うような生成AIアプリで
このフォーマットが返ってくると、ちょっと見た目がとっつきにくくて…という方が多かったりしませんか?

そんな経緯でMarkdownテキストをPDFにする方法を調べてみました。

# 方法

* pythonでMarkdown to HTMLは簡単にできる
* HTML to PDFというアプリを使って変換する。Pythonでもこれをインストールすれば呼べる

というかんじで、Python経由でMarkdownを一度HTML経由して、PDF出力することとしました。

# 実装

今回少しだけ環境依存があるので、
環境が比較的安定しているGoogle Colaboratoryで実現しています。

(1) wkhtmltopdfのインストール

https://wkhtmltopdf.org/

!sudo apt-get install wkhtmltopdf

w

元記事を表示

bokehで綺麗なグラフを作りたい

## bokehとは
Bokehは、Pythonでインタラクティブなグラフやビジュアライゼーションを作成するためのライブラリです。

インタラクティブ性や多様なプロットタイプ,カスタマイズ可能性に着目し勉強してみました。

## 折れ線グラフ
こんな感じのグラフが作成できます
![スクリーンショット 2024-07-12 19.46.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/398994/2f50f63a-dbf3-7245-3ddc-4b9f3619fa92.png)

下記はコードです。
~~~
import pandas as pd
import numpy as np
from bokeh.plotting import figure, show, output_file
from bokeh.models import ColumnDataSource

# サンプル時系列データを生成
dates = pd.date_range(start=”2022-01-01″, periods

元記事を表示

【Python】Object of type is not JSON serializable

オブジェクトをjsonに変換しようとするとタイプエラーが発生したので記録
`TypeError: Object of type SampleClass is not JSON serializable`

## 原因
JSONへのエンコーダとしてはデフォルトで`json.JSONEncoder`を使用しており、変換の際の対応は以下になります。
|Python |JSON |
|—|—|
|dict |object |
|list,tuple |array |
|int,float |number |
|True |true |
|False |false |
|None |null |

つまり、ここにない型をエンコーディングしようとするとTypeErrorが出るというわけです
object, Enum, datetime型をjsonにしようとした際に遭遇する問題でしょうか
“`py
import json
from datetime import date
from enum import Enum
class Color(Enum):

元記事を表示

ABC250Dを解いた

筆者はレート600前後の茶色コーダ

7/11開催のADTで登場した以下のABCの過去問題を解いていく

https://atcoder.jp/contests/abc250/tasks/abc250_d

ADT(ALL)のページ

https://atcoder.jp/contests/adt_all_20240711_3/tasks/abc250_d

# 実装コード

$p\times q^3$ なので使う最大の素数は適当に$N^{\frac{1}{3}}$とみつもってエラトステネスのふるいをして
素数を列挙してみる。あとは素数なので組み合わせ被りを気にせず数え上げたらACした。

“`python
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS()

元記事を表示

OTHERカテゴリの最新記事