検索
ホームページバックエンド開発Python チュートリアル仮想環境、Docker、およびシェル スクリプトに関する私の経験

My Experience with Virtual Environments, Docker, and Shell Scripts

今週、私とクラスメートがお互いのオープンソース プロジェクトに機能を追加しなければならないという素晴らしい課題がありました。しかし、クラスメートが私のプロジェクトを実行しようとしたとき、アプリ全体がクラッシュするという厄介な依存関係の問題に遭遇しました。少し行ったり来たりした後、仮想環境、Docker、単純なシェル スクリプトを組み合わせて使用​​することで問題を修正することができました。何が起こったのか、そしてこれらのツールがどのようにあなたの生活を楽にするのかを詳しく見てみましょう。

1. 仮想環境

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>




仮想環境を使用する理由

  • 物事を整理整頓してください: 仮想環境ではプロジェクトの依存関係が分離されているため、異なるプロジェクトが互いに足を踏み入れることがなくなります。
  • 同じページを維持する:requirements.txt ファイルを作成して、チームの全員が同じバージョンのパッケージを使用していることを確認できます。

不足するとき

仮想環境であっても、私たちの場合のように、問題が発生することがあります。それはむしろシステムレベルの問題だったため、依存関係は依然としてクラッシュしました (ああ)。そこで Docker が窮地を救ってくれました。

2. ドッカー

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 の利点

  • 一貫性: どのシステムを使用しているかは関係ありません。Docker は、アプリがどこでも同じように実行されるようにします。
  • 驚くべきことはありません: Docker にはすべてのシステム ライブラリと依存関係が含まれているため、迷惑な「ライブラリが見つからない」エラーに遭遇することはありません。
  • 共有が簡単: Docker セットアップを他の人と共有でき、簡単なコマンドをいくつか実行するだけで開始できます。

Docker でアプリを実行する

次のコマンドを使用して Docker コンテナを構築して実行します。


<p>docker build -t my-python-app .<br>
docker run -p 5000:5000 my-python-app</p>



  1. シェルスクリプト

シェル スクリプトはプロジェクトのパーソナル アシスタントのようなものです。面倒なセットアップ作業はすべて彼らがやってくれます。仮想環境のセットアップ、依存関係のインストール、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>




なぜわざわざシェル スクリプトを使用するのでしょうか?

  • 1 つのコマンドですべてを制御: 大量のコマンドを実行する代わりに、スクリプトを実行するだけですべてが処理されます。
  • もう間違いはありません: セットアップ プロセスを自動化すると、間違いを犯す可能性が低くなります。
  • どこでも動作: これらのスクリプトは、Linux、macOS、または Windows (Bash を使用している場合) でも使用できます。

TL;DR: いつ何を使用するか

  • 仮想環境: Python パッケージの管理に最適です。依存関係を分離する必要があるが、システムレベルのライブラリは必要ない場合にこれらを使用します。
  • Docker: 異なるマシン間で一貫した環境が必要な場合に最適です。アプリの実行に必要なものがすべて詰め込まれています。
  • シェル スクリプト: セットアップ プロセス全体を自動化し、手順を見逃さないようにするのに便利です。

開発環境のセットアップは、特に共同作業を行う場合に頭痛の種になることがあります。仮想環境は確実な最初のステップですが、問題が生じた場合は Docker が最適です。そして、すべてを結び付けるために、シェル スクリプトを使用すると、すべてがスムーズに実行されます。

これが同様の問題に対処している人にとって役立つことを願っています! この種の問題を解決する他の方法がある場合は、以下のコメントでお知らせください。ぜひご意見をお待ちしております。

以上が仮想環境、Docker、およびシェル スクリプトに関する私の経験の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python:コンパイラまたはインタープリター?Python:コンパイラまたはインタープリター?May 13, 2025 am 12:10 AM

Pythonは解釈された言語ですが、コンパイルプロセスも含まれています。 1)Pythonコードは最初にBytecodeにコンパイルされます。 2)ByteCodeは、Python Virtual Machineによって解釈および実行されます。 3)このハイブリッドメカニズムにより、Pythonは柔軟で効率的になりますが、完全にコンパイルされた言語ほど高速ではありません。

ループvs whileループ用のpython:いつ使用するか?ループvs whileループ用のpython:いつ使用するか?May 13, 2025 am 12:07 AM

useaforloopwhenteratingoverasequenceor foraspificnumberoftimes; useawhileloopwhentinuninguntinuntilaConditionismet.forloopsareidealforknownownownownownownoptinuptinuptinuptinuptinutionsituations whileoopsuitsituations withinterminedationations。

Pythonループ:最も一般的なエラーPythonループ:最も一般的なエラーMay 13, 2025 am 12:07 AM

pythonloopscanleadtoErrorslikeinfiniteloops、ModifiningListsDuringiteration、Off-Oneerrors、Zero-dexingissues、およびNestededLoopinefficiencies.toavoidhese:1)use'i

ループの場合、およびPythonのループ:それぞれの利点は何ですか?ループの場合、およびPythonのループ:それぞれの利点は何ですか?May 13, 2025 am 12:01 AM

forloopsareadvastountousforknowterations and sequences、offeringsimplicityandeadability;

Python:編集と解釈に深く掘り下げますPython:編集と解釈に深く掘り下げますMay 12, 2025 am 12:14 AM

pythonusesahybridmodelofcompilation andtertation:1)thepythoninterpretercompilessourcodeodeplatform-indopent bytecode.2)thepythonvirtualmachine(pvm)thenexecuteTesthisbytecode、balancingeaseoputhswithporformance。

Pythonは解釈されたものですか、それとも編集された言語であり、なぜそれが重要なのですか?Pythonは解釈されたものですか、それとも編集された言語であり、なぜそれが重要なのですか?May 12, 2025 am 12:09 AM

pythonisbothintersedand compiled.1)it'scompiledtobytecode forportabalityacrossplatforms.2)bytecodeisthenは解釈され、開発を許可します。

ループ対pythonのループの場合:説明されたキーの違いループ対pythonのループの場合:説明されたキーの違いMay 12, 2025 am 12:08 AM

loopsareideal whenyouwhenyouknumberofiterationsinadvance、foreleloopsarebetterforsituationsは、loopsaremoreedilaConditionismetを使用します

ループのために:実用的なガイドループのために:実用的なガイドMay 12, 2025 am 12:07 AM

henthenumber ofiterationsisknown advanceの場合、dopendonacondition.1)forloopsareideal foriterating over for -for -for -saredaverseversives likelistorarrays.2)whileopsaresupasiable forsaresutable forscenarioswheretheloopcontinupcontinuspificcond

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター