0

私はPython配布パッケージを学ぼうとしていますが、/bin自分でその部分を理解できないようです. Foo パッケージがインストールされ、 を使用して参照できますfrom FOO import Foo

たとえば、 という名前のプロジェクトがあり、 内に「use-foo」を配置した後にfooというスクリプトがある場合、どのように使用するのでしょうか?use-foofoo/bin

プロジェクトのソース ファイル/ディレクトリ構造は次のようになります。

foo
-->FOO (source code for foo)
    -->Foo.py
-->bin (script uses Foo goes here)
    -->use-foo.py

私は試しましたがimport use-foofrom foo import use-foo動作していません、相対パスですか?

setup.py を追加します。

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

config = {
    'description': 'My Foo Project', 
    'author': 'Paul Liu',
    'url': 'URL to get it at.',
    'download_url': 'Where to download it.',
    'author_email': 'My email.',
    'version': '0.1',
    'install_requires':['nose'],
    'packages':['FOO'],
    'scripts':['bin/use-foo.py'],
    'name': 'foo'
}

setup(**config) 
4

1 に答える 1

1

ソース ディレクトリだけは、コードを開発する場所にすぎません。利用可能なコマンドのいずれかでビルドするまで (または環境にさまざまなパスを手動で追加するまで)、最終的な製品 (インストール済み) フォームを実際に反映することはありません。

開発するには、これを実行するだけです:python setup.py develop
これにより、ソースの場所への単なるリンクである卵が python サイトパッケージにインストールされます。つまり、コードを積極的に編集でき、それが PYTHONPATH に反映されます。ビルド プロセスはパッケージFOOを PYTHONPATH に配置し、スクリプト内のすべてを python にコピーしますbin。たとえば、私のマシンでは:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/foo.egg-linkの作成 (.へのリンク)
/Library/Frameworks/Python.framework への use-foo.py スクリプトのインストール/バージョン/2.6/ビン

これで、python パスに存在するため、インポート パッケージとしてuse-foo.py参照できます。FOOこのコマンドを使用しないことを選択した場合は、PYTHONPATHdevelopに手動で追加して、下にあるパッケージfoo/を見つける必要があります。FOO

ここで最も重要な__init__.pyのは、ファイル (空) をFOOパッケージに追加することです。これは、python がパッケージとして認識するために必要です。


手動環境パス

シェル環境に手動でパスを追加すると、次のようになります (bash シェル)。

export PYTHONPATH=/path/to/foo:$PYTHONPATH
export PATH=/path/to/foo/bin:$PATH
于 2012-08-28T18:49:25.893 に答える