1

test1.py から test.py で定義された Branchname を呼び出そうとしていますが、次のエラーが発生しました。誰か入力を提供できますか?

test.py

import test1
import os
import sys
def main():
    #initialize global variables & read CMD line arguments
    global BranchName
    ScriptDir = os.getcwd()
    print ScriptDir
    BranchName  = sys.argv[1]
    print "BranchName"
    print BranchName
    #Update input file with external gerrits, if any
    print "Before running test1"
    test1.main()
    print "After running test1"

if __name__ == '__main__':
    main()

test1.py

import test
def main ():
    print test.BranchName

次のエラーが発生します

BranchName
ab_mr2
Before running test1
Traceback (most recent call last):
  File "test.py", line 18, in <module>
    main()
  File "test.py", line 14, in main
    test1.main()
  File "/local/mnt/workspace/test1.py", line 3, in main
    print test.BranchName
AttributeError: 'module' object has no attribute 'BranchName
4

2 に答える 2

4

main()test.py で実際に呼び出されることはありません__name__ != '__main__'

印刷すれば__name__、それは実際testです。

これが、多くのスクリプトにif __name__ == '__main__'.

これを修正するには、次の 2 つのことを行う必要があります。

  • の を削除しif __name__ == '__main__':test.py、 に置き換えるだけです。main()

  • import test1.pyテストでは必要ありません。そうすることで、これは実際に で実行main()されているため、まだ定義されていないtest1.pyため、エラーが発生します。test.BranchName

    • ただし、インポートする必要がある場合test1.pyは、実際にif __name__ == '__main__'はそこに を入れることができるため、 からインポートするtest.pyと実行されません。
于 2013-06-30T05:15:53.497 に答える
1

私の目標は、test1.py から test.py に渡された BranchName を出力することです。

この場合、ファイル名が逆になっています。また、何も渡していません(で遊ぶのではなく、そうすべきですglobal)。

test1.py、 を計算し、メソッド fromBranchName渡します。maintest

import os
import sys

import test

def main():
    ScriptDir = os.getcwd()
    print ScriptDir
    BranchName  = sys.argv[1]
    print "BranchName"
    print BranchName
    #Update input file with external gerrits, if any
    print "Before running test1"
    test.main(BranchName) # here I am passing the variable
    print "After running test1"

if __name__ == '__main__':
    main()

ではtest.py、次のことを簡単に行うことができます。

def main(branch_name):
    print('In test.py, the value is: {0}', branch_name)
于 2013-06-30T05:31:29.057 に答える