42

いくつかの独自の python パッケージがあり、https: //pypi.python.org/simple/ のようなシンプルなインターフェイスを使用して、それらのローカル pypi リポジトリを作成したいと考えています。

このリポジトリは、セキュリティ上の理由からミラーなしでローカル専用に作成したいもので、Apache の管理下に置かれます。

コマンドのpypimirror外観は一度初期化する必要があり、これをミラーリングする必要があります。

ローカルの python パッケージに基づいて PyPi Simple Index を生成するにはどうすればよいですか。

このための他の簡単なスクリプトはありますか?

4

5 に答える 5

29

私の会社でも同様のニーズがありました。基本的に、「クローズド ソース」パッケージをインデックスにアップロードしながら、PyPI 上にあるかのようにインストールするにはどうすればよいでしょうか?

PyPI キャッシュ (PyPI からアクセスするパッケージはサーバーにキャッシュされます) として機能するdevpiと呼ばれるプロジェクトと、強力で高速なインデックス サーバーを後援しています。ドキュメントはhttp://doc.devpi.net/latest/で入手できます。

ロードマップの次は、マルチ ジオ展開のミラーリングです。マシンのタイヤをキックするには、約 5 分かかります (クイック スタート ガイドを参照してください)。最後に、devpi は pip と easy_install の両方と互換性があります (つまり、マシンに devpi クライアントをインストールする必要はありません)。

この助けを願っています。

于 2013-08-27T22:55:26.313 に答える
27

あなたがここで答えるように頼んだので:

を見pip2piてください。まさにあなたが探しているもののようです。

于 2013-08-06T03:12:55.593 に答える
7

ミラーに特別なものはなく、mod_rewrite自分でセットアップするために使用できます。

  1. URL にマップされたディレクトリにパッケージをダンプします。ここでは/url/to/my/pypi/、例を使用しています。フォルダ階層は/foo/bar/simple/[name of package]/[name of tarball]

  2. .htaccessパッケージがあるディレクトリのグローバル構成に次を追加します。行の最後のブロックは、グローバル pypi インデックスへのフォールバックです。

    Options +Indexes
    
    RewriteEngine On
    
    RewriteRule ^/robots.txt - [L]
    RewriteRule ^/icons/.* - [L]
    RewriteRule ^/index\..* - [L]
    
    RewriteCond /foo/bar/simple/ !-f
    RewriteCond /foo/bar/simple/ !-d
    RewriteRule ^/(.*)/?$ http://pypi.python.org/ [R,L]
    
  3. ~/.pip/pip.conf新しいリポジトリを指すように更新します。

    [global]
    index-url = http://localhost/url/to/my/pypi/
    

    または-i http://localhost/url/to/my/pypi/、コマンド ラインでオプションを使用します。

于 2013-08-05T10:43:01.243 に答える
3

simplepypi の実行について話している場合は、パッケージを追加して提供するためのサーバーがあります。ドキュメントを引用するには:

- Running this on the setup.py of your favorite package:

    python setup.py sdist upload -r local

os.walkまたはローカルのサイトパッケージディレクトリで使用する場合は、各パッケージ/ディレクトリでglob.globすばやくフィルター処理しsetup.py、それらで上記を呼び出すことができます。

それらの .html リストを含む tar.gz ファイルのディレクトリを作成するだけでよい場合は、site-packages ディレクトリの最上位レベルで glob.glob を使用できます - tar.gz 各ディレクトリを順番に追加し、結果を追加します。 filename をリストに追加すると、そのリストから index.html を生成できます。

これには多数のテンプレートエンジンのいずれかを使用するか、自分で生成できます。

import glob
filelist = glob.glob("*.tar.gz")
tags = ['<A href="file:Where/%s">%s</A>' % (s,s) for s in tags]
head = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME="Generator" CONTENT="Python Script">
<META NAME="Keywords" CONTENT="Cheeseshop">
<META NAME="Description" CONTENT="List of local python packages">
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">
"""
tail = """</BODY></HTML>"""
tags.insert(0,head)
tags.append(tail)
page = "\n".join(tags)

次に、ページを保存または提供します。

于 2013-08-05T07:29:18.243 に答える