docker+devpi を使用してローカル pypi ソースをビルドする方法

docker+devpi を使用してローカル pypi ソースをビルドする方法

以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更しましたが、速度に満足できませんでした。さらに重要なのは、統合テスト環境がオフラインだったことです。統合テスト環境で開発するには、当然、独自のローカル pip ソースを構築する必要がありました。 devpi を使う前は pip2pi を使用していましたが、オフライン環境での tox コマンドが常に失敗するバグがあったため、最終的に devpi を使用して pip ソースをビルドしました。ここでは便利で高速な Docker デプロイメントが使用されています。誤ってクラッシュした場合は、Docker コンテナを再実行するだけです。お使いの環境に Docker がインストールされていない場合は、Docker コミュニティのドキュメント「Docker のインストール」など、インストール方法を自分で検索できます。 CentOSユーザーの場合は、次の方法でインストールできます。

sudo yum アップデート
sudo yum -y dockerをインストールします
sudo systemctl でdockerを有効にする
sudo systemctl dockerを起動します

次に、dockerを使用してPythonのローカルイメージソースをデプロイします。docker hubにある既存のイメージを使用できます。
muccg/devpi この画像

# devpiサーバ管理者パスワードを設定する DEVPI_PASSWORD = 123

mkdir -p /src/docker/devpi
mkdir /tmp/wheelhouse

docker run -d --name devpi \
  --publish 3141:3141 \
  --volume /tmp/ホイールハウス:/ホイールハウス
  --volume /srv/docker/devpi:/data \
  --env=DEVPI_PASSWORD=$DEVPI_PASSWORD \
  --常に再起動\
  muccg/docker-devpi

次に、必要な wheel パッケージをローカルにダウンロードします。 requirements.txt ファイルの内容は、必要な Python ライブラリのリストです。

pip ホイール --wheel-dir /tmp/wheelhouse -r requirements.txt

pip からダウンロードしたライブラリがすでに wheel パッケージである場合、ファイルは /tmp/wheelhouse に直接配置されます。
tar パッケージの場合、pip は最初に wheel パッケージをビルドしますが、これには時間がかかる場合があります。ダウンロードが完了すると、ホイールハウスの内容は次のようになります。

ll /tmp/ホイールハウス
合計 524K
-rwxrwxrwx 1 新人 新人 155K 4月6日 23:40 certifi-2019.3.9-py2.py3-none-any.whl
-rwxrwxrwx 1 新人 新人 131K 4月6日 23:40 chardet-3.0.4-py2.py3-none-any.whl
-rwxrwxrwx 1 新人 新人 58K 4月6日 23:40 idna-2.8-py2.py3-none-any.whl
-rwxrwxrwx 1 新人 新人 57K 4月6日 23:40 リクエスト-2.21.0-py2.py3-none-any.whl
-rwxrwxrwx 1 新人 新人 116K 4月6日 23:40 urllib3-1.24.1-py2.py3-none-any.whl

ダウンロードが完了したら、ローカル環境にdevpiクライアントがインストールされている場合は、ホイールパッケージを直接アップロードできますが、すでに

wheelhouseフォルダーをコンテナに取り付けるか、コンテナ内で直接操作することができます

# コンテナに入る docker exec -it -u root devpi bash

# ログインして devpi をアップロードします。http://<host_ip>:3141/root/public --set-cfg を使用します。
devpi ログイン ルート 123
devpi アップロード --from-dir /wheelhouse

アップロードが完了したら、 http://<host_ip>:3141を使用して、pip ローカル ソース サーバーのステータスを表示できます。

一時的な使用には、pip installの--indexおよび--trusted-hostオプションを使用できます。

pip インストール --index http://<host_ip>:3141/root/public/+simple/ \
      --trusted-host <ホストIP>

または、pip.confファイルを変更して永続的に使用する

# vim ~/.pip/pip.conf
[グローバル]
index_url = http://<host_ip>:3141/root/public/+simple/
信頼できるホスト = <ホストIP>
[検索]
インデックス = http://<host_ip>:3141/root/public/

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Python パッケージング モジュール ホイールを使用して Python パッケージを PyPI に公開する方法
  • Pythonでpypiにパッケージをアップロードする方法
  • Docker を使用して pypi プライベート リポジトリを構築する方法
  • pypiプライベート倉庫の構築プロセスの詳細な説明
  • 依存関係 pypiwin32 または pywin32-ctypes が見つからない pyinstaller パッケージング エラーに対する完璧なソリューション
  • Python パッケージを PyPI に公開し、whl ファイルを作成する方法
  • Python の自作パッケージで、pip を使用して pypi への送信を回避し、ローカル マシンにのみインストールします [推奨]
  • Doubanが提供する国内のpypiソースを使用する
  • Python がパッケージを Pypi にアップロードする (簡単なコード)
  • Python で pip を使用して PyPI 以外の公式サイトからサードパーティのライブラリをインストールする方法
  • 独自のモジュールをpypiにアップロードする方法

<<:  mysql バックアップ スクリプト mysqldump の使い方の詳細な説明

>>:  1 つの記事で Vuex を理解する

推薦する

MySQLでconcat関数を使用する方法

以下のように表示されます。 //managefee_managefee テーブルの年と月を照会し、c...

NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...

HTML マークアップ言語 - フォーム

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

フロントエンド開発における一般的なテクニックのまとめ

1. 記事タイトルリストの右側に日付を表​​示する方法:コードをコピーコードは次のとおりです。 &l...

Linux で pyenv をインストールする方法

前提条件gitをインストールする必要があるインストール手順1. リモートリポジトリからpyenvをク...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

VueはPCで写真をアップロードする機能を実現

この記事の例では、PC上で写真アップロード機能を実現するためのVueの具体的なコードを参考までに共有...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

MySql の集計関数に条件式を追加する方法

MySQL のフィルタリングのタイミングは、集計関数で使用される where 条件と having ...

プロジェクトにおける CSS グリッドシステムの柔軟な使用方法の詳細な説明

序文CSS グリッドは通常、さまざまなフレームワークにバンドルされていますが、実際のビジネス ニーズ...

JavaScript継承のさまざまな方法とメリット・デメリットを詳しく解説

目次1. プロトタイプチェーン継承2. コンストラクタの借用(古典的な継承) 3. 組み合わせ継承4...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル

Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...

複雑なウェブサイトのナビゲーションを簡素化

<br />ナビゲーション設計は構造設計における主要なタスクの 1 つです。ソフトウェア...

Linux での umask の使用に関する詳細な説明

私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...