いろいろな例や他の同様の質問を見てきましたが、私のシナリオに完全に一致する例を見つけることができないようです。似たような質問がたくさんあるので、これを聞いているような気がしますが、これを「正しく」機能させることができないようです。これが私のプロジェクトです:
user_management (package)
|
|------- __init__.py
|
|------- Modules/
| |
| |----- __init__.py
| |----- LDAPManager.py
| |----- PasswordManager.py
|
|------- Scripts/
| |
| |----- __init__.py
| |----- CreateUser.py
| |----- FindUser.py
「CreateUser.py」をメインのuser_managementディレクトリに移動すると、次のように簡単に使用できます"import Modules.LDAPManager"
。LDAPManager.pyをインポートする---これは機能します。私ができないこと(やりたいこと)は、CreateUser.pyをScriptsサブフォルダーに保持し、LDAPManager.pyをインポートすることです。私はを使用してこれを達成したいと思っていました"import user_management.Modules.LDAPManager.py"
。これは機能しません。要するに、Pythonファイルを階層内で簡単に深く見ることができますが、あるディレクトリを上に、別のディレクトリに下に参照するPythonスクリプトを取得することはできません。
以下を使用して問題を解決できることに注意してください。
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import Modules.LDAPManager as LDAPManager
これは悪い習慣であり、落胆していると聞きました。
スクリプト内のファイルは直接実行することを目的としています(スクリプト内のinit .pyは必要ですか?)。この場合、-mフラグを指定してCreateUser.pyを実行する必要があることを読みました。これについていくつかのバリエーションを試しましたが、CreateUser.pyにLDAPManager.pyを認識させることができないようです。
python -m user_management.Scripts.CreateUser