0

私は suds (素晴らしいライブラリ、ところで) を使用していますが、それを移植可能にしたいと考えています (それに依存するコードを使用するすべての人がファイルをチェックアウトして実行できるようにするため)。

「suds-0.4-py2.6.egg」(python/lib/site-packages 内) を追跡し、ファイルに入れました。

import path.to.egg.file.suds
from path.to.egg.file.suds import *
import path.to.egg.file.suds-0.4-py2.6

最初の 2 つは suds が存在しないと訴えており、最後の 1 つは構文が無効です。

__init__.py ファイルには、次のものがあります。

__all__ = [ "FileOne" ,
            "FileTwo",
      "suds-0.4-py2.6"]

そして以前に試した

__all__ = [ "FileOne" ,
            "FileTwo",
      "suds"]

しかし、どちらも機能しません。

これは正しい方法ですか?もしそうなら、どうすればインポートを機能させることができますか。そうでない場合、どうすれば同じ結果を得ることができますか?

ありがとう

4

3 に答える 3

1

sys.path次のように、卵ファイルを に追加する必要があります。

import sys
# insert at 0 instead of appending to end to take precedence 
# over system-installed suds (if there is one).
sys.path.insert(0, "suds-0.4-py2.6.egg")
import suds
于 2012-08-30T10:39:25.210 に答える
1

.eggファイルは圧縮されたアーカイブです。したがって、発見したように直接インポートすることはできません。

簡単な方法は、アーカイブを解凍し、sudsディレクトリをアプリケーションのソース コード ディレクトリにコピーすることです。Python は最初に発見したモジュールで停止するため、Python 用にグローバルにインストールされていなくても、suds のローカル コピーが使用されます。

それからの 1 つのステップは、 を に追加eggしてパスに追加することsys.pathです。

ただし、適切な方法は、配布用にアプリケーションをパッケージ化することです。または、プログラムがどの外部パッケージに依存しているかを他の人に知らせる要件ファイルを提供します。

于 2012-08-30T10:41:24.460 に答える
0

通常requirements.txt、すべての依存関係とそのバージョンを含むファイルを使用してプログラムを配布します。ユーザーは、これらのライブラリを次の方法でインストールできます。

pip install -r requirements.txt

あなたのコードに含めることは良い考えではないと思いeggsます.ユーザーがpython2.6の代わりにpython2.7を使用するとどうなりますか

要件ファイルの詳細: http://www.pip-installer.org/en/latest/requirements.html

于 2012-08-30T10:38:14.977 に答える