【完全版】pip installエラーまとめ|subprocess・依存関係・環境・権限の解決方法(Windows対応)
PythonやStable Diffusionの環境構築で、pip install時のエラーに困っていませんか?
- subprocess-exited-with-error が出る
- pip installが途中で失敗する
- インストールが権限エラーで止まる
この記事では、pip installエラーの原因と対処法を原因別に整理し、最短で解決できるようにまとめています。
該当するエラーから詳細記事へ進んでください。
(Windows / Python環境でのトラブルに対応しています)
あなたのエラーはどれ?
- エラー文に「subprocess」がある → subprocessエラー
- 「dependency」「conflict」がある → 依存関係エラー
- 「permission denied」がある → 権限エラー
- よく分からない → 上から順に確認
エラー早見表(クリックで解決)
※ エラー文に近いものをクリックしてください
subprocess-exited-with-errorの原因と解決方法
原因:依存関係・環境不整合
→ 解決方法はこちら
technoxs-stacker.hatenablog.com
pip installで依存関係エラーが出る原因と対処法
原因:パッケージのバージョン競合
→ 解決方法はこちら
technoxs-stacker.hatenablog.com
pip install失敗(環境・手順系)
原因:インストール手順・仮想環境の問題
→ 解決方法はこちら
technoxs-stacker.hatenablog.com
環境構築・設定ミスによるエラー
原因:Python環境・pip状態の不整合
→ 解決方法はこちら
technoxs-stacker.hatenablog.com
権限エラー・インストール権限問題
原因:書き込み権限不足・実行環境
→ 解決方法はこちら
technoxs-stacker.hatenablog.com
よくある原因と対処法
原因①:依存関係の不整合(最も多い)
よくある症状:
- subprocess-exited-with-error
- pip installが途中で止まる
原因:
- パッケージのバージョン競合
- requirements.txtの依存崩れ
対処:
pip install --upgrade pip setuptools wheel
関連:
subprocessエラー(完全解説)
technoxs-stacker.hatenablog.com依存関係エラー詳細
technoxs-stacker.hatenablog.com特定ライブラリのインストール失敗
technoxs-stacker.hatenablog.com
原因②:環境の問題(Python・pip)
よくある症状:
- 同じコマンドなのに動かない
- 特定環境だけエラーになる
原因:
- Pythonバージョンの違い
- pipの状態不整合
対処:
- pipを最新化
- Python 3.10〜3.11を使用
関連:
subprocessエラー別ケース
technoxs-stacker.hatenablog.com環境依存のインストールエラー
technoxs-stacker.hatenablog.com
原因③:インストール手順・設定ミス
よくある症状:
- pip installが途中で失敗する
- 仮想環境でうまく動かない
原因:
- 仮想環境の不備
- インストール手順ミス
対処:
- 仮想環境を作り直す
- クリーン環境で再インストール
関連:
technoxs-stacker.hatenablog.com
原因④:権限・実行環境の問題
よくある症状:
- permission denied
- インストールできない
原因:
- 管理者権限不足
- 書き込み権限がない
対処:
pip install --user パッケージ名
または
- 管理者権限で実行
- 仮想環境を使用
関連:
technoxs-stacker.hatenablog.com
エラー別の詳しい解決方法
subprocess-exited-with-error(完全解説)
technoxs-stacker.hatenablog.com
subprocessエラー(別ケース)
technoxs-stacker.hatenablog.com
pip依存関係エラー
technoxs-stacker.hatenablog.com
pip install失敗(環境・手順)
technoxs-stacker.hatenablog.com
環境構築エラー(深い原因)
technoxs-stacker.hatenablog.com
権限エラー
technoxs-stacker.hatenablog.com
よくある検索例
- pip install エラー Windows
- pip install できない Python
- subprocess-exited-with-error 対処
まとめ
- pipエラーは「依存関係」「環境」「手順」「権限」に分類できる
- subprocessエラーは依存関係問題の一種であることが多い
- 原因ごとに切り分けて対処するのが重要
pipエラーやPython環境トラブルについても随時追加していきます。
ブックマークしておくとすぐに確認できます。
JiraをDockerでローカル環境に構築する手順(WSL / PostgreSQL)
本記事では WSL + Dockerを使用してJiraをローカル環境に構築する方法 を解説します。
Jiraはチーム開発で広く利用されている課題管理ツールですが、ローカル環境で検証したいケースも多いと思います。
例えば以下のような用途です。
- 個人開発のタスク管理
- Jiraのプラグイン検証
- 開発環境での動作確認
本記事では Docker Composeを利用してJira + PostgreSQL環境をWSL上に構築する手順 をまとめています。
数分でローカル環境にJiraを構築できるので、ぜひ参考にしてみてください。
スポンサーリンク
目次
この記事でできること
この記事を読むことで以下ができるようになります。
- WSL上にJiraを構築する
- Docker ComposeでJira + PostgreSQL環境を作成する
- ローカル環境でJiraを起動する
Jiraとは
Jiraは Atlassian社が提供する課題管理ツール です。
主に以下の用途で利用されます。
- ソフトウェア開発のタスク管理
- バグトラッキング
- アジャイル開発(スクラム / カンバン)
クラウド版を利用するケースが多いですが、Dockerを使用することでローカル環境でも構築できます。
今回は WSL + Docker環境でJiraをローカル構築する方法 を解説します。
今回構築する構成
今回構築する環境構成は以下です。
WSL2 └ Docker ├ Jira └ PostgreSQL
Docker Composeを使用して
Jira + PostgreSQLの2コンテナ構成 を作成します。
使用環境
今回の環境は以下です。
- WSL2 - Docker - Docker Compose - PostgreSQL - Jira Software
Jiraはメモリを比較的使用するため、WSLのメモリ設定を調整します。
構築手順
1 WSL設定ファイルの変更
Jiraはメモリを多く使用するため、WSLの設定を変更します。
以下のファイルを編集します。
C:\Users\your user name\.wslconfig
設定例
[wsl2] memory=6GB processors=4 swap=2GB localhostForwarding=true
設定変更後はWSLを再起動します。
wsl --shutdown
2 作業ディレクトリ作成
Jira用のディレクトリを作成します。
mkdir -p ~/jira-docker cd ~/jira-docker
3 docker-compose.yml作成
以下の内容で docker-compose.yml を作成します。
services:
postgres:
image: postgres:15
container_name: jira-postgres
environment:
POSTGRES_DB: jira
POSTGRES_USER: youruser
POSTGRES_PASSWORD: yourpassword
volumes:
- postgres_data:/var/lib/postgresql/data
mem_limit: 1g
restart: unless-stopped
jira:
image: atlassian/jira-software:9.12
container_name: jira
depends_on:
- postgres
ports:
- "8080:8080"
environment:
ATL_JDBC_URL: jdbc:postgresql://postgres:5432/jira
ATL_JDBC_USER: youruser
ATL_JDBC_PASSWORD: yourpassword
ATL_DB_TYPE: postgres72
JVM_MINIMUM_MEMORY: 1g
JVM_MAXIMUM_MEMORY: 2g
volumes:
- jira_data:/var/atlassian/application-data/jira
mem_limit: 3g
restart: unless-stopped
volumes:
postgres_data:
jira_data:
この設定では以下のコンテナが起動します。
PostgreSQL(Jiraデータベース) Jira Software
4 Jiraコンテナ起動
以下のコマンドでJiraを起動します。
docker compose up -d
初回起動は数分かかる場合があります。
5 Jiraへアクセス
ブラウザで以下にアクセスします。
http://localhost:8080
Jiraの初期セットアップ画面が表示されれば成功です。
よくあるエラー
Jiraが起動しない
原因として多いのは メモリ不足 です。
対策 .wslconfig
memory=8GB
に変更します。
ポート8080が使用されている
他のアプリがポート8080を使用している場合があります。
その場合はdocker-composeを変更します。
"8081:8080"
アクセス
http://localhost:8081
Jira停止方法
Jiraを停止する場合は以下を実行します。
docker compose down
データはvolumeに保存されるため、再起動しても保持されます。
スポンサーリンク
まとめ
今回は WSL + Docker環境でJiraをローカル構築する方法 を紹介しました。
Docker Composeを使用することで、Jira環境を簡単に作成できます。
ローカル環境にJiraを構築すると以下のような用途で活用できます。
個人開発のタスク管理
Jiraの検証環境
プラグイン開発
WSL + Dockerを使えば数分で環境構築できるので、ぜひ試してみてください。
【Stable Diffusion】I tried generating a kiss-waiting image of Mizuhara Chizuru from “Rent-A-Girlfriend” using AnyLoraCleanLinearMix_ClearVAE and LoRA.
スポンサーリンク
Previously, I generated images of Mizuhara Chizuru from “Rent-A-Girlfriend.”
This time, I tried generating images of Mizuhara Chizuru waiting for a kiss.
contents
スポンサーリンク
abstract
The model, LoRA, and prompt used to generate the “Kiss-Waiting” image of Mizuhara Chizuru from “Rent-A-Girlfriend.” on Google Colab and Diffusers
1.requirement
Google Colab
Diffusers
transformers==4.26.0
model : AnyLoraCleanLinearMix_ClearVAE
LoRA: Mizuhara Chizuru 彼女、お借りします Ichinose Chizuru 水原千鶴 Kanojo, Okarishimasu
LoRA:Incoming kiss
LoRA:Detail Tweaker LoRA
2.result
positive prompt
brown hair, long hair, bangs,brown eyes, medium breasts, BREAK knit sweater, long sleeves, long skirt, Exquisite visuals, high-definition, masterpiece, best quality, BREAK incoming kiss, face focus, close-up, closed eyes
negative prompt
(worst quality, low quality:1.4), monochrome, zombie, (interlocked fingers:1.2), bad-hands-5, mutated hands, liquid fingers
seed=31815177576222

seed=19134324699012

seed=9552924619856

スポンサーリンク
3.refarence
【Stable Diffusion】diffusersでVAEのMissing key(s) / Unexpected key(s) in state_dictエラーの原因と対処法(v0.17対応)
スポンサーリンク
Stable Diffusion(diffusers)を使用中に、VAEの読み込み時に以下のエラーが出ていませんか?
Missing key(s) in state_dict: Unexpected key(s) in state_dict:
この記事では、このエラーの原因と対処法を分かりやすく解説します。
この記事でわかること
- VAEの
state_dictエラーの原因 - diffusersのバージョン差分による問題
- 確実に解決する方法
エラー内容
diffusersをアップデートした際に、以下のエラーが発生します。
Missing key(s) in state_dict: Unexpected key(s) in state_dict:
原因
このエラーは主に以下が原因です。
① diffusersのバージョン差分
モデル内部のキー名が変更されている
例:
- v0.16.0
decoder.mid_block.attentions.0.key.bias
- v0.17.0
decoder.mid_block.attentions.0.to_k.bias
👉 キー名が変更されたため不一致が発生
② VAEモデルとの不整合
古いVAEと新しいdiffusersの組み合わせで発生
③ カスタムモデル使用時
LoRAや独自VAEで特に発生しやすい
対処方法
方法①:キー名を変換する(今回の解決方法)
state_dict["decoder.mid_block.attentions.0.to_k.bias"] = \ state_dict.pop("decoder.mid_block.attentions.0.key.bias", None)
👉 既存キーを新しいキーに置き換える
方法②:diffusersのバージョンを揃える
pip install diffusers==0.16.0
👉 モデルと同じバージョンに戻す
方法③:対応済みVAEを使う
👉 新しいdiffusersに対応したVAEを使用
Google Colab環境での注意点
- セッション再起動後にバージョンが変わる
- キャッシュが残る場合がある
👉 バージョン固定が重要
よくあるハマりポイント
- エラーが長くて原因が分からない
- 一部キーだけ違うケース
- LoRA適用時に発生
関連記事
pip installなど他のエラーもまとめています。 環境構築で詰まった場合はこちらも参考にしてください。
▶ pip installエラーまとめはこちら https://technoxs-stacker.hatenablog.com/entry/2026/04/26/092732
まとめ
- state_dictエラーは「キー不一致」が原因
- diffusersのバージョン差分で発生する
- キー変換 or バージョン統一で解決可能
Stable Diffusion環境ではバージョン差分によるエラーが多いため、依存関係を揃えることが重要です。
スポンサーリンク
【self supervised learning】yoloの自己教師あり学習結果を使って再学習してみた
スポンサーリンク
以前に物体検出タスクにて自己教師あり学習をやってみました
technoxs-stacker.hatenablog.com
今回は自己教師あり学習の結果を使って再学習する流れをやってみました
この記事は備忘録です
目次
スポンサーリンク
この記事でわかること
物体検出タスクのDNNにて自己教師あり学習の結果を使って再学習する際のサンプルコード
1.実行環境
Google Colab
ultralytics
lightly
1.1 モジュールインストール
!pip install -q lightly !pip install -q ultralytics
2.ソースコード
import copy
import torch
import torchvision
from torch import nn
from lightly.loss import DINOLoss
from lightly.models.modules import DINOProjectionHead
from lightly.models.utils import deactivate_requires_grad, update_momentum
from lightly.transforms.dino_transform import DINOTransform
from lightly.utils.scheduler import cosine_schedule
from tqdm import tqdm
from ultralytics.nn.modules import Conv
import os
class DINO(torch.nn.Module):
def __init__(self, backbone, input_dim):
super().__init__()
self.student_backbone = backbone
self.student_head = DINOProjectionHead(
input_dim, 512, 64, 2048, freeze_last_layer=1
)
self.teacher_backbone = copy.deepcopy(backbone)
self.teacher_head = DINOProjectionHead(input_dim, 512, 64, 2048)
deactivate_requires_grad(self.teacher_backbone)
deactivate_requires_grad(self.teacher_head)
def forward(self, x):
y = self.student_backbone(x).flatten(start_dim=1)
z = self.student_head(y)
return z
def forward_teacher(self, x):
y = self.teacher_backbone(x).flatten(start_dim=1)
z = self.teacher_head(y)
return z
class PoolHead(nn.Module):
def __init__(self, f: int, i: int, c1: int): # Added type hints for scripting
super().__init__()
self.f = f # receive the outputs from these layers
self.i = i # layer number
self.conv = Conv(c1, 1280, 1, 1, None, 1)
self.avgpool = nn.AdaptiveAvgPool2d(1)
def forward(self, x: torch.Tensor) -> torch.Tensor: # Added type hints for scripting
return self.avgpool(self.conv(x))
def target_transform(t):
return 0
import configparser
def main(model_name="yolov5n.pt",epochs=10, batch_size=256):
from ultralytics import YOLO # Moved import inside the function
model_name="yolov5n.pt"
GLOBAL_CROP_SIZE = 224
LOCAL_CROP_SIZE = 96
backbone_layer_num=12
# load base model
yolo = YOLO(model_name)
print("base model-----------------------------------------------------------------------------")
print(yolo)
# Only backbone
yolo.model.model = yolo.model.model[:backbone_layer_num] # Keep first n layer
print("backbone model-----------------------------------------------------------------------------")
print(yolo)
dummy = torch.rand(2, 3, GLOBAL_CROP_SIZE, GLOBAL_CROP_SIZE)
out = yolo.model.model[:-1](dummy) # Run forward pass only using the first n layers-> Upsampleの手前まで実行する-> Upsampleを置き換えるため手前の出力を取得する
yolo.model.model[-1] = PoolHead(yolo.model.model[-1].f, yolo.model.model[-1].i, out.shape[1]) # Replace nth layer with PoolHead
out = yolo.model(dummy)
input_dim = out.flatten(start_dim=1).shape[1]
input_dim
backbone = yolo.model.requires_grad_()
backbone.train()
model = DINO(backbone, input_dim)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
normalize = dict(mean=(0.0,0.0,0.0), std=(1.0,1.0,1.0)) # YOLO uses these values
transform = DINOTransform(global_crop_size=GLOBAL_CROP_SIZE, local_crop_size=LOCAL_CROP_SIZE, normalize=normalize)
dataset = torchvision.datasets.VOCDetection(
"datasets/pascal_voc",
download=True,
# download=False,
transform=transform,
target_transform=target_transform,
)
dataloader = torch.utils.data.DataLoader(
dataset,
batch_size=batch_size,
shuffle=True,
drop_last=True,
#num_workers=2,
num_workers=os.cpu_count(),
pin_memory=True,
)
criterion = DINOLoss(
output_dim=2048,
warmup_teacher_temp_epochs=5,
)
# move loss to correct device because it also contains parameters
criterion = criterion.to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
print("Starting Training")
for epoch in range(epochs):
total_loss = 0
momentum_val = cosine_schedule(epoch, epochs, 0.996, 1)
# Initialize the progress bar
pbar = tqdm(dataloader, desc=f"Epoch {epoch+1}/{epochs}", unit="batch")
for batch in pbar:
views = batch[0]
update_momentum(model.student_backbone, model.teacher_backbone, m=momentum_val)
update_momentum(model.student_head, model.teacher_head, m=momentum_val)
views = [view.to(device) for view in views]
global_views = views[:2]
teacher_out = [model.forward_teacher(view) for view in global_views]
student_out = [model.forward(view) for view in views]
loss = criterion(teacher_out, student_out, epoch=epoch)
total_loss += loss.detach()
loss.backward()
# We only cancel gradients of student head.
model.student_head.cancel_last_layer_gradients(current_epoch=epoch)
optimizer.step()
optimizer.zero_grad()
# Update the progress bar with the current batch loss
pbar.set_postfix(loss=loss.item())
avg_loss = total_loss / len(dataloader)
print(f"Epoch: {epoch + 1}, Loss: {avg_loss:.5f}")
#Load and save pretrained backbone
from ultralytics import YOLO
# Load the same model that was used for pretraining
yolo = YOLO(model_name)
# Transfer weights from pretrained model
yolo.model.load(model.student_backbone)
# Save the model for later use
yolo.save("pretrained.pt")
return 0
3.自己教師あり学習実行
main()
4. 自己教師あり学習の結果を使って再学習
# Clone the YOLOv5 repository !git clone https://github.com/ultralytics/yolov5 # Navigate to the cloned directory %cd yolov5 # Install required packages !pip install -r requirements.txt
!python train.py --data VOC.yaml --cache --epochs 3 --weights "/content/pretrained.pt" --cfg "/content/yolov5/models/yolov5n.yaml"
所感
まだまだ改良の余地ありますが、とりあえず自己教師あり学習から再学習までの流れを構築できました
スポンサーリンク
参考
WSLにzを入れてディレクトリ移動を楽にする
スポンサーリンク
目次
スポンサーリンク
この記事でわかること
WSL上にzを導入する方法
1.モジュールをダウンロード
sudo git clone https://github.com/rupa/z ~/z
2.設定をbachrcへ追記
vim .bashrc
. ~/z/z.sh
スポンサーリンク
3.参考
qiita.com
qiita.com
github.com
所感
Zに慣れると戻れなくなりますね・・・
WSLにpecoを入れて開発環境を快適にする
スポンサーリンク
pecoなるモジュールを使うとターミナル上のコマンド入力が楽になりそうだったので
今回導入してみました
色んな方が便利な設定を記載してくれているので、自分に必要そうなものをWSLの環境に設定しています
N番煎じですが参考になれば嬉しいです★
目次
スポンサーリンク
この記事でわかること
WSL上でpecoを使ってコマンド入力を楽にする方法
1.インストール
以下コマンドでインストール
sudo apt install peco
2.機能追加
検索機能の置き換え
bashrcに追記してcntrk + Rの検索機能を上書きする
vim .bashrc
以下を追記する
function peco_search_history() {
local l=$(HISTTIMEFORMAT= history | \
sort -r | sed -E s/^\ *[0-9]\+\ \+// | \
peco --query "$READLINE_LINE")
READLINE_LINE="$l"
READLINE_POINT=${#l}
}
bind -x '"\C-r": peco_search_history'
ディレクトリ移動の機能追加
bashrcに追記してディレクトリ検索機能を追加
vim .bashrc
以下を追記する
function peco-cd {
local sw="1"
while [ "$sw" != "0" ]
do
if [ "$sw" = "1" ];then
local list=$(echo -e "---$PWD\n../\n$( ls -F | grep / )\n---Show hidden directory\n---Show files, $(echo $(ls -F | grep -v / ))\n---HOME DIRECTORY")
elif [ "$sw" = "2" ];then
local list=$(echo -e "---$PWD\n$( ls -a -F | grep / | sed 1d )\n---Hide hidden directory\n---Show files, $(echo $(ls -F | grep -v / ))\n---HOME DIRECTORY")
else
local list=$(echo -e "---BACK\n$( ls -F | grep -v / )")
fi
local slct=$(echo -e "$list" | peco )
if [ "$slct" = "---$PWD" ];then
local sw="0"
elif [ "$slct" = "---Hide hidden directory" ];then
local sw="1"
elif [ "$slct" = "---Show hidden directory" ];then
local sw="2"
elif [ "$slct" = "---Show files, $(echo $(ls -F | grep -v / ))" ];then
local sw=$(($sw+2))
elif [ "$slct" = "---HOME DIRECTORY" ];then
cd "$HOME"
elif [[ "$slct" =~ / ]];then
cd "$slct"
elif [ "$slct" = "" ];then
:
else
local sw=$(($sw-2))
fi
done
}
alias sd='peco-cd'
※今後追加した機能があれば追記します
スポンサーリンク