2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonのモジュールを必要な物だけに保つ

Posted at

pythonのモジュールを必要な物だけに保つ

ローカルじゃ動くのに、サーバ(クラウド)上でモジュールが見つからないとか有りますよね

また、不要になったモジュールが残っていたり

フォルダー階層

.
├── app
│   ├── main.py # pythonのソース
├── requirements  
│   ├── base.in # 実行に必要なもの
│   ├── base.txt
│   ├── dev.in # テストや開発に必要なもの
│   └── dev.txt
└── scripts
    └── pip.sh

requirements/base.in の例

requirements/base.in
aiosmtplib
alembic
asyncpg
azure-communication-email
azure-functions
azure-identity
azure-storage-blob
chardet
fastapi
fastapi-healthchecks
Jinja2
msgraph-sdk
opencensus-ext-azure
opencensus-ext-fastapi
openpyxl
passlib
Pillow
psycopg2-binary
pydantic
pydantic-core
pydantic-settings
pydantic[email]
python-multipart
pytz
Secweb
sqlalchemy

requirements/dev.in の例

requirements/dev.in
-r base.in
autoflake
black
freezegun
httpx
isort
pip-compile-multi
pyproject-flake8
pytest
pytest-asyncio
pytest-azurepipelines
pytest-cov
pytest-dotenv
pytest-mock
pytest-postgresql
sqlalchemy-utils

実行シェルにしておくと便利

scripts/pip.sh
#!/bin/sh
pip install --upgrade pip # pipをupgradeする
pip install pip-tools # pip-toolsをインストール(requirements/dev.inには入れない)
pip-compile-multi # requirements/*.inからrequirements/*.txtが作られる
pip-sync requirements/dev.txt # 候補に無いものはuninstallされる

dev.txt はこうなる

requirements/dev.txt
# SHA1:21928a7634f95b9f09819688a328f79d34eee3b5
#
# This file is autogenerated by pip-compile-multi
# To update, run:
#
#    pip-compile-multi
#
-r base.txt
autoflake==2.3.1
    # via -r requirements/dev.in
black==24.10.0
    # via -r requirements/dev.in
build==1.2.2.post1
    # via pip-tools
click==8.1.7
    # via
    #   black
    #   pip-compile-multi
    #   pip-tools
coverage[toml]==7.6.4
    # via pytest-cov
flake8==7.0.0
    # via pyproject-flake8
freezegun==1.5.1
    # via -r requirements/dev.in
importlib-resources==6.4.5
    # via pytest-azurepipelines
iniconfig==2.0.0
    # via pytest
isort==5.13.2
    # via -r requirements/dev.in
mccabe==0.7.0
    # via flake8
mirakuru==2.5.3
    # via pytest-postgresql
mypy-extensions==1.0.0
    # via black
pathspec==0.12.1
    # via black
pip-compile-multi==2.6.4
    # via -r requirements/dev.in
pip-tools==7.4.1
    # via pip-compile-multi
platformdirs==4.3.6
    # via black
pluggy==1.5.0
    # via pytest
port-for==0.7.4
    # via pytest-postgresql
psycopg==3.2.3
    # via pytest-postgresql
pycodestyle==2.11.1
    # via flake8
pyflakes==3.2.0
    # via
    #   autoflake
    #   flake8
pyproject-flake8==7.0.0
    # via -r requirements/dev.in
pyproject-hooks==1.2.0
    # via
    #   build
    #   pip-tools
pytest==8.3.3
    # via
    #   -r requirements/dev.in
    #   pytest-asyncio
    #   pytest-azurepipelines
    #   pytest-cov
    #   pytest-dotenv
    #   pytest-mock
    #   pytest-nunit
    #   pytest-postgresql
pytest-asyncio==0.24.0
    # via -r requirements/dev.in
pytest-azurepipelines==1.0.5
    # via -r requirements/dev.in
pytest-cov==6.0.0
    # via -r requirements/dev.in
pytest-dotenv==0.5.2
    # via -r requirements/dev.in
pytest-mock==3.14.0
    # via -r requirements/dev.in
pytest-nunit==1.0.7
    # via pytest-azurepipelines
pytest-postgresql==6.1.1
    # via -r requirements/dev.in
sqlalchemy-utils==0.41.2
    # via -r requirements/dev.in
toposort==1.10
    # via pip-compile-multi
wheel==0.44.0
    # via pip-tools

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?