2016-11-03 8 views
0

こんにちは私はこのように構造化されたpythonアプリケーションを持っています。別のサブフォルダを持つpythonプロジェクト

--project 
    --a_subfolder 
     --a_file.py 
    --another_subfolder 
     --another_file 

これらのファイル間の依存関係を処理するクリーンなソリューションはありますか?そしてそれは実際本当に良いことのようなものを行うことです。

import a_file 
x = a_file.AClass() 
+0

質問を明確にする必要があります。あなたはファイル間の依存関係について言及していますが、 'a_file'をインポートしているファイルについては言いません(別のファイルに' a_file'をインポートすることを意味します)。 – Tony

答えて

1

あなたは

from a_subfolder import a_file as afile 
from another_subfolder import another_file as another 

x = afile.AClass()ような何かを行うことができますすることは完全に有効です。

+0

はいa_fileはanother_fileから何かをインポートできますか? – Ced

+0

一般に、相対インポートではなく絶対インポートを使用することが望ましいです。このように、 'project.another_subfolder import another_file'と言ってください。 – mmenschig

+0

ありがとうございます。これはa_fileとanother_fileが同じディレクトリにある場合にのみうまくいくと思います。 – Ced

0

は、そのような場合、あなたはあなたがお勧め何をして正しい、あなたが大規模なDjangoプロジェクトに取り組んでいるようですねCEDからのコメント

後に編集します。モデルを1つのフォルダに入れ、別のフォルダに表示します。

実際、大規模なDjangoプロジェクトでは、この方法でファイルを整理しています。この例のように:

+-project 
| 
+--models 
    +--__init.py__ 
    +--cars.py [car, van & truck classes] 
    +--boats.py [boat & ship classes] 

あなたはmodelsフォルダの__init.py__ファイル内の各サブフォルダから公開したいクラスをインポートします。

モデルがで

from cars import car, van, truck 
from boats import boat, ship 

をinit.pyごviewsあなたが短い表記

from project.models import car, truck, ship 

だからあなたの質問への蛇行答えはイエスであると、ボートや車のモデルを参照することができ、別々のフォルダにファイルを整理し、それらの間で参照することができます。

+0

多くのファイルを含む大きなプロジェクトを作成すると、別のフォルダを持つように構造化されています。 1つの例は、あなたのモデル、ビュー、およびコントローラのためのフォルダを持っているため、ビューには依存関係としてのコントローラがあり、コントローラにはいくつかのモデルが依存する – Ced

+0

これは実際には私の最初の試みでしたが、プロジェクトの親ディレクトリはpythonpathにあります – Ced

関連する問題