ホームページ >バックエンド開発 >Python チュートリアル >仮想環境、Docker、およびシェル スクリプトに関する私の経験
今週、私とクラスメートがお互いのオープンソース プロジェクトに機能を追加しなければならないという素晴らしい課題がありました。しかし、クラスメートが私のプロジェクトを実行しようとしたとき、アプリ全体がクラッシュするという厄介な依存関係の問題に遭遇しました。少し行ったり来たりした後、仮想環境、Docker、単純なシェル スクリプトを組み合わせて使用することで問題を修正することができました。何が起こったのか、そしてこれらのツールがどのようにあなたの生活を楽にするのかを詳しく見てみましょう。
Python を使用している場合、仮想環境は必須です。これらは基本的に、グローバルな Python セットアップを台無しにすることなくプロジェクトのパッケージをインストールできる分離されたスペースを作成します。これは、パッケージを安全に追加および削除できる独自の Python プレイグラウンドを持つようなものです。
セットアップ方法について簡単にまとめます:
python3 -m venv venv source venv/bin/activate # For Windows, use: venv\Scripts\activate
その後、pip を使用してすべてのパッケージをインストールできます。
<p>pip install -r requirements.txt</p>
仮想環境であっても、私たちの場合のように、問題が発生することがあります。それはむしろシステムレベルの問題だったため、依存関係は依然としてクラッシュしました (ああ)。そこで Docker が窮地を救ってくれました。
Docker は、アプリとそのすべての依存関係 (システム ライブラリを含む) をパッケージ化するコンテナを作成します。これは、どのマシンでも同じように実行されることを意味します。
基本的な Dockerfile は次のようになります:
<p># Use a lightweight Python image<br> FROM python:3.9-slim</p> <p># Set up a working directory<br> WORKDIR /usr/src/app</p> <p># Copy over the application files<br> COPY . .</p> <p># Install dependencies<br> RUN pip install --no-cache-dir -r requirements.txt</p> <p># Run the application<br> CMD ["python", "app.py"]</p>
次のコマンドを使用して Docker コンテナを構築して実行します。
<p>docker build -t my-python-app .<br> docker run -p 5000:5000 my-python-app</p>
シェル スクリプトはプロジェクトのパーソナル アシスタントのようなものです。面倒なセットアップ作業はすべて彼らがやってくれます。仮想環境のセットアップ、依存関係のインストール、Docker イメージの構築、コンテナーの実行を行う簡単なスクリプト (setup.sh) を作成しました。それは次のようになります:
<p>#!/bin/bash</p> <p># Set up virtual environment<br> python3 -m venv venv<br> source venv/bin/activate</p> <p># Install dependencies<br> pip install -r requirements.txt</p> <p># Build Docker image<br> docker build -t my-python-app .</p> <p># Run Docker container<br> docker run -p 5000:5000 my-python-app</p>
開発環境のセットアップは、特に共同作業を行う場合に頭痛の種になることがあります。仮想環境は確実な最初のステップですが、問題が生じた場合は Docker が最適です。そして、すべてを結び付けるために、シェル スクリプトを使用すると、すべてがスムーズに実行されます。
これが同様の問題に対処している人にとって役立つことを願っています! この種の問題を解決する他の方法がある場合は、以下のコメントでお知らせください。ぜひご意見をお待ちしております。
以上が仮想環境、Docker、およびシェル スクリプトに関する私の経験の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。