Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pythonでpypi作る時のプロジェクトで、一般的なバージョン管理とテストフロー、そのためのディレクトリ構成について #90

Open
dai-motoki opened this issue May 2, 2024 · 0 comments

Comments

@dai-motoki
Copy link
Owner

Pythonでパッケージを作成し、PyPIで公開する際の一般的なバージョン管理とテストフロー、およびそのためのディレクトリ構成について説明します。

  1. バージョン管理:

    • Gitを使用してプロジェクトのバージョン管理を行います。
    • GitHub、GitLab、BitBucketなどのリモートリポジトリにプロジェクトをホストすることが一般的です。
    • セマンティックバージョニング (例: 1.0.0、1.1.0、2.0.0) を使用して、パッケージのバージョンを管理します。
  2. テストフロー:

    • 自動化されたテストを実行して、コードの品質を維持します。
    • ユニットテスト、統合テスト、機能テストなどを実装します。
    • テストフレームワークとしては、pytestunittestnoseなどが一般的に使用されます。
    • CIツール(例: Travis CI、CircleCI、GitHub Actions)を使用して、プルリクエストやマージ時に自動的にテストを実行します。
    • カバレッジツール(例: coverage)を使用して、テストカバレッジを測定し、カバレッジレポートを生成します。
  3. ディレクトリ構成:
    プロジェクトのディレクトリ構成は以下のようになります。

    project_name/
    ├── project_name/
    │   ├── __init__.py
    │   └── ...
    ├── tests/
    │   ├── __init__.py
    │   └── ...
    ├── docs/
    │   └── ...
    ├── setup.py
    ├── requirements.txt
    ├── README.md
    ├── LICENSE
    ├── .gitignore
    └── ...
    
    • project_name/: プロジェクトのソースコードを含むディレクトリ。パッケージ名と同じ名前にします。
    • tests/: テストコードを含むディレクトリ。
    • docs/: ドキュメントを含むディレクトリ。
    • setup.py: パッケージのメタデータ、依存関係、ビルド設定などを定義するファイル。
    • requirements.txt: パッケージの依存関係を記述するファイル。
    • README.md: プロジェクトの概要、インストール方法、使用方法などを説明するファイル。
    • LICENSE: ライセンス情報を含むファイル。
    • .gitignore: Gitで無視するファイルやディレクトリを指定するファイル。
  4. その他の考慮事項:

    • コードの品質を維持するために、リンター(例: flake8pylint)やフォーマッター(例: blackyapf)を使用することが推奨されます。
    • ドキュメントの生成には、SphinxMkDocsなどのツールを使用できます。
    • パッケージの配布には、setuptoolswheelを使用します。
    • PyPIへのパッケージのアップロードには、twineを使用します。

以上が、Pythonでパッケージを作成し、PyPIで公開する際の一般的なバージョン管理とテストフロー、およびそのためのディレクトリ構成の概要です。プロジェクトの規模や要件に応じて、適宜カスタマイズしてください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant