Development

ติดตั้ง dirsearch ด้วย uv แล้วใช้งานไม่ได้

แก้ปัญหา ModuleNotFoundError No module named pkg_resources ตอนติดตั้ง dirsearch ด้วย uv tool install

ปัญหาที่เจอ

หากทำการติดตั้ง dirsearch ด้วยเครื่องมือ

uv tool install dirsearch==0.4.3

จะเจอกับ error

PS C:\Users\robin> dirsearch --version
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\robin\.local\bin\dirsearch.exe\__main__.py", line 4, in <module>
    from dirsearch.dirsearch import main
  File "C:\Users\robin\AppData\Roaming\uv\tools\dirsearch\Lib\site-packages\dirsearch\dirsearch.py", line 23, in <module>
    from pkg_resources import DistributionNotFound, VersionConflict
ModuleNotFoundError: No module named 'pkg_resources'

ทำไมถึงพัง

pkg_resources ไม่ใช่ของที่ติดมากับ python นะ มันเป็นส่วนหนึ่งของ package ชื่อ setuptools

ทีนี้ dirsearch 0.4.3 บน PyPI (ปล่อยตั้งแต่ปี 2022) มัน import pkg_resources แต่ไม่ได้ประกาศ setuptools เป็น dependency ไว้ ลองดู metadata ของมันได้ครับ มีแค่ Jinja2, PySocks, requests, urllib3 พวกนี้ ไม่มี setuptools สักตัว

สมัยก่อนไม่มีปัญหาเพราะ virtualenv จะแถม setuptools มาให้เสมอ แต่ uv tool install มันสร้าง environment แบบสะอาดจริง ๆ ไม่ยัด setuptools มาให้ พอ dirsearch ไปเรียก pkg_resources เลยไม่เจอ

เห็นได้จาก log ตอนลงจาก git ด้านล่างเลยครับ มีบรรทัด + setuptools==80.9.0 โผล่มา เพราะ version บน git แก้เรื่องนี้ไปแล้ว

วิธีแก้ไข

ให้ติดตั้งใหม่ด้วย

จำเป็นต้องมี git cli ด้วยนะครับ (windows: winget install --id Git.Git -e --source winget)

uv tool install git+https://github.com/maurosoria/dirsearch
PS C:\Users\robin> uv tool install git+https://github.com/maurosoria/dirsearch
    Updated https://github.com/maurosoria/dirsearch (70a763556e5dd894e1eeb2e62f77d83cb3fc5603)
Resolved 35 packages in 1.06s
      Built dirsearch @ git+https://github.com/maurosoria/dirsearch@70a763556e5dd894e1eeb2e62f77d83cb3fc5603
Prepared 13 packages in 1.95s
Uninstalled 3 packages in 34ms
Installed 14 packages in 242ms
 + anyio==4.11.0
 - chardet==5.2.0
 + defusedcsv==3.0.0
 - dirsearch==0.4.3
 + dirsearch==0.4.3 (from git+https://github.com/maurosoria/dirsearch@70a763556e5dd894e1eeb2e62f77d83cb3fc5603)
 + h11==0.16.0
 + httpcore==1.0.9
 + httpx==0.28.1
 + httpx-ntlm==1.4.0
 + mysql-connector-python==9.5.0
 + psycopg==3.2.12
 + psycopg-binary==3.2.12
 - pyparsing==3.2.5
 + requests-toolbelt==1.0.0
 + setuptools==80.9.0
 + sniffio==1.3.1
 + tzdata==2025.2

เพียงเท่านี้ก็จะสามารถใช้งานได้แล้วครับ

Related Articles

Simple Paginate
Development

Simple Paginate

โค้ดตัวอย่างการทำ pagination แบบง่าย ๆ ด้วย Express + TypeScript + Mongoose พร้อมหน้าตา response
ตั้งค่าให้สามารถเชื่อมต่อ Local Network ได้ ตอนที่เชื่อม openvpn
Development

ตั้งค่าให้สามารถเชื่อมต่อ Local Network ได้ ตอนที่เชื่อม openvpn

แก้ไขไฟล์ openvpn config หากมีการ import เข้าไปใน openvpn gui แล้วสามารถค้นหาไฟล์การตั้งค่าได้ที่
วิธีการลบ .env file ออกจาก git แบบถูกวิธี
Development

วิธีการลบ .env file ออกจาก git แบบถูกวิธี

สมมติว่าเราเผลอ commit ไฟล์ .env ที่มี API key ไปแล้ว และ push ขึ้น GitHub เราต้องรีบลบมันออกทันที เพราะข้อมูลอาจถูกนำไปใช้ได้

Copyright © 2026