52322


以下のmain_nunchuck.pyを実行しました。`sudo python3 main_nunchuck.py`

[code]

    from ..import_directory.Nunchuck.RaspberryPi import nunchuck
    from ..import_directory.python_sdk.milkcocoa import milkcocoa
    
[/code]

すると、以下のエラーが発生しました。

[code]

    Traceback (most recent call last):
        File "main_nunchuck.py", line 1,in <module>
          from ..import_directory.Nunchuck.RaspberryPi import nunchuck
    SystemError: Parent module '' not loaded, cannot perform relative import
    
[/code]

ファイル構造は以下の様にしています。

[code]

    └─/pi
       └─/nunchuck_control
           │  main_nunchuck.py
           │
           └─/import_directory
               │ 
               │
               ├─/Nunchuck
               │     |
               │     |__/RaspberryPi
               │            nunchuck.py
               |
               ├─/python_sdk
                     |
                     |
                     ├─/milkcocoa
                     |     |   milkcocoa.py
                           |   __int__.py
                           |
                           ├─/paho
                               |
                               ├─/mqtt
    
[/code]

どのようにしてpythonのimportをすれば良いのでしょうか。  
よろしくお願いします。

========追伸1==========  
`__int__.py`を以下のように各フォルダに挿入しました。

[code]

    └─/pi
       └─/nunchuck_control
           │  main_nunchuck.py
           │
           └─/import_directory
               │ __int__.py
               │
               ├─/Nunchuck
               │     |  __int__.py
               |     |
               │     ├─/RaspberryPi
               |     |     __int__.py
               │           nunchuck.py
               |
               ├─/python_sdk
                     |   __int__.py
                     |
                     ├─/milkcocoa
                     |     |   milkcocoa.py
                           |   __int__.py
                           |
                           ├─/paho
                               |  __int__.py
                               |
                               ├─/mqtt
                               |    __int__.py
                                    client.py
    
[/code]

そして、`main_nunchuck.py`を実行しました。

[code]

    from import_directory.Nunchuck.RaspberryPi import nunchuck
    from import_directory.python_sdk.milkcocoa import milkcocoa as milkcocoa
    
[/code]

mtb_beta様にお答え頂いたように`nunchuck.py`のimport
errorは発生しませんでした。ありがとうございます。ただ、`client.py`のimport errorが発生しました。

[code]

    Traceback (most recent call last):
        File "main_nunchuck.py", line 2,in <module>
          from import_directory.python_sdk.milkcocoa import milkcocoa as milkcocoa
    　　File "/home/pi/nunchuck_control/import_directory/python_sdk/milkcocoa/milkcocoa.py", line 6, in <module>
       　 from paho.mqtt import client as mqtt
    ImportError:No module named 'paho'
    
[/code]

と表示されました。度々、すみません。協力頂ければ幸いです。

=====追伸2======  
自己解決しました。`milkcocoa.py`の6行目を以下のように変更するとうまく行きました。

[code]

    from import_directory.python_sdk.milkcocoa.paho.mqtt import client as mqtt
    
[/code]

理由は分かりませんが、なんとなく絶対PATHを入力するとうまく動きました。なぜ、相対PATHではうまくいかず、絶対PATHではうまく動くのでしょうか?


CC BY-SA 4.0
2019-01-25T04:45:30.777
52305
2019-01-29T04:11:47.470
2019-01-29T04:11:47.470
26270
26270
question
python
python 3.5.3のimportエラーについて


まず、Pythonではパッケージとなるディレクトリには `__init__.py` が必要です。  
[こちら](https://docs.python.jp/3/reference/import.html?highlight=%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8#regular-
packages)が公式ドキュメントです。

次のようなファイルは必要かと思いますので用意しましょう。 `__init__.py` はファイルがあれば良いので、中身は空で大丈夫です。

`import_directory/__init__.py`  
`import_directory/Nunchuck/__init__.py`  
`import_directory/Nunchuck/RaspberryPi/__init__.py`  
`python_sdk/__init__.py`  
`python_sdk/milkcocoa/__init__.py`

次にimportの行ですが、先頭の `..` は不要のように見えます。以下のように修正して一度試してみてください。

[code]

    from import_directory.Nunchuck.RaspberryPi import nunchuck
    from import_directory.python_sdk.milkcocoa import milkcocoa
    
[/code]


CC BY-SA 4.0
2019-01-25T16:17:50.897
52322
2019-01-25T16:17:50.897
7834
52305
answer