2012-07-16 43 views
4

我試圖從test_file裏面的層次結構導入指定模塊在Python從子文件夾層次導入

類似:

test_case1.py 
test_subsuite_2 
test_sub_2.1.1.py 
test_suite2 

是有可能做到這個層次運行的進口

/project/main.py 
/project/test_files 

test_files文件夾層次結構是這樣的:

test_files 
    test_suite1 
     test_case1.py 
     test_subsuite_1 
      test_sub1_1.py 
      test_sub1_2.py 
     test_subsuite_2 
      test_subsuite_2_1 
       test_sub_2.1.1.py 
      test_sub2_1.py 
      test_sub3_2.py 

    test_suite2 
     test_case2.py 
     test_subsuite2_1 
      test_sub21_1.py 
      test_sub21_2.py 
     test_subsuite2_2 
      test_sub22_1.py 
      test_sub23_2.py 

回答

4

在所有文件夾中創建一個名爲__init__.py的空文件。然後,您可以使用.作爲文件夾分隔符導入。

+0

對我來說,這仍然給'ImportError:No module named ...' – 2015-10-09 15:46:27

1

關鍵是要創建一個空白文件__init__.py全部子文件夾包含您要導入的文件。 在你的情況,你將不得不對所有的下列文件夾 -

  • test_files的創建__init__.py文件
  • test_files \ test_suite1
  • test_files \ test_suite1 \ test_subsuite_2
  • test_files \ test_suite1 \ test_subsuite_2 \ test_subsuite_2_1

此外,當您導入文件時,請小心指定正確的導入路徑,使用整個路徑最上層指定,並與由.
例如分離的不同文件夾中的水平,則必須通過指定導入test_case1:

從test_files.test_suite1進口test_case1

同樣,test_subsuite_2可以通過指定被導入:

from test_files.test_suite1 import test_subsuite_2