Linuxではモジュールが見つかりませんエラーが発生しましたが、Windowsでは正常に動作します。

Linuxではモジュールが見つかりませんエラーが発生しましたが、Windowsでは正常に動作します。

Pythonで作成したプログラムをWindows環境で実行しようとしています。プログラムをコピーしてLinux(Debian)で実行しようとすると機能しません。

次のエラーが発生します。

Traceback (most recent call last):
  File "BlackBox.py", line 26, in <module>
    from BB_Files import BB_Expand
ImportError: No module named BB_Files

BB_Expand ファイルが BB_Files フォルダーにあっても、エラーが発生します。

また、Pythonで現在のディレクトリへのパスを追加してみました。

sys.path.append("/home/pe/Desktop/AES")
# Sub-Folders of AES are also accessible
sys.path.append("/home/pe/Desktop/AES/BB_Files")

しかし、それでも幸運ではありません。

ファイル構造はこんな感じです。

/home/pe/Desktop/AES/Main.py
/home/pe/Desktop/AES/BB_Files
/home/pe/Desktop/AES/BB_Files/BB_Days.py
/home/pe/Desktop/AES/BB_Files/BB_Expand.py
/home/pe/Desktop/AES/BB_Files/BB_Steps.py 

これはコマンドの出力ですls -l

drwxrwx--x 4 pe users  4096 Oct 26 21:43 BB_Files
-rw-rw---- 1 pe users 15284 Oct 26 22:04 Main.py

以下はファイルのいくつかの初期コードです。

import sys    # sys.argv ; sys.path, sys.exit
import os
import hashlib
import struct # Interpret strings as packed binary data
import getopt # for Runtime arguments
import time
from datetime import date

# Append Paths from where the Files would be Imported.
sys.path.append("/home/pe/Desktop/AES")
# Sub-Folders of AES are also accessible
sys.path.append("/home/pe/Desktop/AES/BB_Files")
# Sub-Fodlers of BB_Files are also accessible now (Tables)
from BB_Files import BB_Expand
from BB_Files import BB_Steps
from BB_Files import BB_Days

これはエラーを提供する行です。

from BB_Files import BB_Expand

Pythonがモジュールを見つけることができないため、この行以降はプログラムは実行されません。

同じコードがWindows上で完全に実行されます。

誰でもこの問題を解決するのに役立ちますか?

答え1

__init__.pyBB_Filesフォルダに名前が空である可能性があるファイルを作成する必要があります。 ~から文書:

Pythonがディレクトリをパッケージを含むものとして扱うには、__init__.pyファイルが必要です。これは、一般名(文字列など)を含むディレクトリが後でモジュール検索パスに表示される有効なモジュールを誤って隠すのを防ぐために行われます。最も簡単な場合、__init__.pyは空のファイルである可能性がありますが、パッケージの初期化コードを実行することもできます。

関連情報