2017-09-13 98 views
0

我有多個子目錄像這樣一個項目的Python的風格:嵌套路徑進口

/opt/exampleProject/src 
├── __init__.py 
├── dir1 
│   ├── __init__.py 
│ ├── file.py 
│ └── file2.py 
└── dir2 
    ├── __init__.py 
    ├── file3.py 
    └── file4.py 

我main.py文件住在這裏

/usr/bin/main.py 

我想知道導入exampleProject最徹底的方法由main使用。 fileX.py文件也相互導入,這裏顯示了更多內容。我希望能夠做到的是將其添加到我的$ PYTHONPATH中,以便main.py可以導入它們。無論如何要做到這一點?

我一直在考慮單獨添加它們。

sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 

但我希望有一個很好的方式來做到這一點。

+0

你只需要'sys.path.append' exampleProejct目錄,並且所有的模塊都可用。如果你需要導入然後所有,添加進口聲明到根包'__init __。py' – Vinny

回答

1

sys.path混淆是強烈不鼓勵。 Instead create a package for /opt/exampleProject by creating a setup.py.

/opt/exampleProject 
├── setup.py 
└── src 
    ├── __init__.py 
    ├── dir1 
    │ ├── __init__.py 
    │ ├── file.py 
    │ └── file2.py 
    └── dir2 
     ├── __init__.py 
     ├── file3.py 
     └── file4.py 

使用

pip install -e /opt/exampleProject 

然後進行安裝這樣做,你可以簡單地做

import example_project 

在其他任何python腳本或包之後。

+0

這將很好地工作,但是我建立這個項目通過rpm和easy_install安裝。這可以在這種設置中工作嗎? 像easy_install/opt/exampleProject /? 對不起,我沒有提到,在原來的職位,我試圖縮小這個問題。 – AdamR

+0

在這種情況下,源代碼應該不會進入'/ opt/sampleProject',而是進入'/ usr/lib/python2.7/site-packages/sampleProject'中。 'import sample_project'將會在任何地方工作。 –