

プロジェクトとかの規約で最上位の階層を含めたimport文の書き方について質問します。  
以下は例です。

[code]

    /root_package ※importをここからにしたい
     | start.py
     | const.py ※XYZ=(1, 0, 0)といった定義
     | 
     /utils
      | u.py
      | uconst.py ※ABC=(1, 2, 3)といった定義
    
[/code]

start.py

[code]

    from root_package.const import XYZ
    
[/code]

u.py

[code]

    from root_package.utils.uconst import ABC
    
[/code]

例は省略していますが"＿init＿.py"は各フォルダに中身は空であります。  
以上のように、start.pyとu.pyで最上位の"root_package"を含めた記述で  
from import記述で問題ないと思うのですが、  
start.pyを実行すると"ModuleNotFoundError XYZ"が出ます。  
何か記述が足らないのでしょうか？


CC BY-SA 4.0
2022-09-07T01:08:06.357
90967
2022-09-07T03:37:57.270
2022-09-07T01:44:31.040
3060
54286
question
python
Python import文で最上位のディレクトリからの書き方


実行するプログラムの置き場所が間違っているようですね。

`start.py`が実行するプログラムであるなら、それはパッケージに含まれるファイルではなくアプリケーションなので`root_package`ディレクトリの中にあるのはおかしいでしょう。

`start.py`は以下のように`root_package`の親ディレクトリに配置すべきものでしょうね。

[code]

    start.py
    /root_package ※importをここからにしたい
      | __init__.py
      | const.py ※XYZ=(1, 0, 0)といった定義
      | 
      /utils
        | __init__.py
        | u.py
        | uconst.py ※ABC=(1, 2, 3)といった定義
    
[/code]


CC BY-SA 4.0
2022-09-07T03:37:57.270
90969
2022-09-07T03:37:57.270
26370
90967
answer