2016-04-25 13 views
1

私はTwitterのパンツビルドツールで "Hello World"エクササイズをしていました。 "パンツ"レポ情報源をクローンした後、私は自分の地元のパンツをうまく構成しました。"Hello World"の例のパンツビルドの問題

まず、私のようにレポでネストされたディレクトリを作成しました。そして、

$ mkdir -p mark/python/project_test 

、私は私のアプリを指定してビルドするには、そのディレクトリ内の2つのファイルを作成:

$ touch mark/python/project_test/Hello_world.py 
$ touch mark/python/project_test/BUILD 

Hello_World.py :

print "Hello World!" 

BUILD:

python_binary(name="myapp", 
      source="Hello_world.py" 
     ) 

それは私のような./pantsでそれを実行したときに完璧に走った:私は

import utility 
print "Hello World!", utility.user(), "!" 

:として次に

$ ./pants run mark/python/project_test:myapp 
$ Hello World! 

、私は変更 "Hello_world.py" で依存関係を追加しようとしていましたまた、同じディレクトリにutility.pyを作成しました。

import os 

def user(): 
return os.environ['USER'] 

元のアプリケーションに依存関係を追加すると、 BUILD:私は同じコマンドで./pantsを呼び出したときに

python_library(name="app-lib", 
      source=globs("*py") 
     ) 
python_binary(name="myapp", 
      source="hello_world.py", 
      dependencies=[pants(':app-lib')] 
     ) 

しかし、それはエラーを返しました:

$ ls mark/python/project_test 
$ BUILD Hello_world.py utility.py 

$ ./pants run mark/python/project_test:myapp 
Exception caught: (<class 'pants.base.cmd_line_spec_parser.BadSpecError'>) 

Exception message: name 'pants' is not defined 
while executing BUILD file BuildFile(mark/python/project_test/BUILD,  
FileSystemProjectTree(/Users/mli/workspace/source)) 
Loading addresses from 'mark/python/project_test' failed. 
when translating spec mark/python/project_test:myapp 

は私のディレクトリ上の3つのファイルが現在ありません

私のアプリがutility.pyからライブラリを読み込めないのはなぜですか?フォルダツリーとBUILDファイルを整理する正しい方法は何ですか?

  • 私は新しいツールを作成していて、質問に答えるときに誰かがパンツを使用するというビットコンテクストを提供できるかどうか本当に感謝しています。ありがとう!! :)

答えて

2

私はあなたのプロジェクトを少し調整して動かすことができました。あなたの問題は次のとおりです:

  1. 以前は、ショートパンツにはpants()ラッパーがありましたが、もう存在しません。たとえそれがあっても構文が少し間違っていると思います。
  2. 実際に異なる場合は、sourcesourcesを互換的に使用しました。 - 作成されたバイナリのためのエントリポイント

    • python_binarysourceを有する:番号2について

、それはおそらく微妙な違いです。

  • python_librarysources - 他のプロジェクトにインポートするファイルの任意の数です。
  • BUILDファイルを以下の定義に一致するように変更する場合は、呼び出しを再実行する必要があります。がんばろう!

    python_library(
        name='app-lib', 
        sources=globs('*.py'), 
    ) 
    
        python_binary(
        name="myapp", 
        source="hello_world.py", 
        dependencies=[':app-lib'] 
    ) 
    
    +0

    ありがとうございました@mateor!そうですか。更新されたバージョンがある場合は、古いBUILD構文を使用している可能性があります。それは完全に動作します!再びありがとう! –