このディレクトリ構造とこれらのファイルを含む python プロジェクトがあります。
/home/project_root
|---__init__.py
|---setup
|---__init__.py
|---configs.py
|---test_code
|---__init__.py
|---tester.py
テスター スクリプトは、「setup.configs」を参照して setup/configs.py からインポートします。私の開発マシンでは問題なく動作します。
これは、開発 (Linux) コンピューターで機能します。これを別の (Linux) コンピューターに移動するときは、PYTHONPATH を次のように設定します。
PYTHONPATH = "/home/project_root"
しかし、tester.py を実行すると、configs モジュールが見つかりません。また、インタラクティブな Python インタープリターを実行すると、sys.path に /home/project_root ディレクトリが含まれません。しかし、$PYTHPATH を echo すると /home/project_root が表示されます。
ここで何が間違っていますか?
(ターゲット マシンの PYTHONPATH を設定するために .bashrc ファイルに依存したくありません。コードは Django アプリケーション用であり、最終的には www-data によって実行されます。また、Apache の構成がDjango には PYTHONPATH の仕様が含まれていますが、ターゲット マシン環境でコードが単体テストに合格することを最初に確認しようとしているため、ここでは使用したくありません。)
CURIOUSER と CURIOUSER これは、ユーザー ID と権限の問題のようです。- 通常のユーザーからのコマンドで起動すると、インタープリターは期待どおりにモジュールをインポートできます。- sudo (ここでは Ubuntu を実行しています) で起動すると、インタープリターは期待どおりにモジュールをインポートできません。- ファイルは www-data によって所有されているため、sudo を使用してテスト スクリプトを呼び出しています (b/c Django アプリケーションの一部として apache を実行しているユーザーによって呼び出されます)。- ファイルの所有権を通常のユーザーの所有権に変更した後、テスト スクリプトはインポート エラーなしで実行されます (ただし、すべての種類のユーザー ID 関連の壁に)。
お時間を無駄にして申し訳ありません。 この質問はクローズする必要があります。