0

そのディレクトリがパッケージでない場合、ローカルディレクトリではないディレクトリからPythonでimportステートメントを使用できるかどうか知りたいですか?また、システムパス上のすべてのディレクトリはパッケージである必要がありますか?システムパスに相対パスを追加する場合、それは何に関連していますか?

4

2 に答える 2

1

求めているすべての結果を達成するために、sys.pathを変更できます。

  1. はい、できます。ローカルディレクトリではないディレクトリを追加するには:

    import sys
    sys.path += '/your_path/your_subpath/'  # absolute paths
    import your_package
    

    モジュールをsys.pathに追加せずにファイルシステム内の任意のパスからロードする必要がある場合は、imp.load_moduleも使用できます

  2. システムパス上のすべてのディレクトリはパッケージである必要がありますか?いいえそうではありません

  3. システムパスに相対パスを追加する場合、それは何に関連していますか?

    Pythonインタープリターを呼び出すために使用されたスクリプトを含むディレクトリに移動します。 ただし、次のように設定することをお勧めします。

    import sys,os
    sys.path.append(os.path.realpath('..'))
    

    またはスクリプトのパスから:

    import sys,os
    sys.path.append(os.path.realpath(os.path.join(os.path.dirname(sys.argv[0]), '..')))
    

    どちらの例も、インタラクティブシェルからも機能します。どちらの例も、OSに関係なく、相対パスが意図したとおりであることを確認します

    Pythonの相対パスの詳細については、この投稿も参照してください

于 2013-01-27T21:16:44.707 に答える
0

それは本当に3つの異なる質問です:

そのディレクトリがパッケージでない場合、ローカルディレクトリではないディレクトリからPythonでimportステートメントを使用できるかどうかを知りたいと思いました

はい、できます。

また、システムパス上のすべてのディレクトリはパッケージである必要がありますか?

いいえ、ありません。

システムパスに相対パスを追加する場合、それは何に関連していますか?

現在の作業ディレクトリを基準にしています。

于 2013-01-27T21:15:16.957 に答える