私はPythonで私の最初のプロジェクトをコーディングしていますが、インポートをどのように処理するかはわかりません。私は私の大学のコンピュータで作業しており、PYTHONPATH変数を変更することはできません。私はまた、さまざまなコンピュータ/ OSからこのプロジェクトに取り組んでいます(プロジェクトへのパスは必ずしも同じではありません)。PYTHONPATHを変更できない場合、Pythonで他のモジュールをインポートする最良の方法は?
私はお互いにインポートする異なるフォルダにいくつかの異なるモジュールを持っています。現在私はfile_path = os.path.abspath(__file__)
を使って別のモジュールへのパスを取得してから、ディレクトリを逆戻りして、目的のモジュールを含むフォルダを追加します。これは、sys.path.append(symantic_root)
でPYTHONPATHに追加されます。
このシステムは動作しますが、それは非常に厄介見終わると重複コードの多くは、例えば、各モジュールの先頭であり:
import os
import sys
# Get the path to the directory above the directory this file is in, for any system
file_path = os.path.abspath(__file__)
root_path = os.path.dirname(os.path.dirname(file_path))
# Get the paths to the directories the required modules are in
symantic_root = os.path.join(root_path, "semantic_analysis")
parser_root = os.path.join(root_path, "parser")
# Add the directories to the path variable
sys.path.append(symantic_root)
sys.path.append(parser_root)
import semantic_analyser
import jaml
プロジェクトを構築するためのより良い方法上の任意のアドバイスこのようなことは非常に高く評価されます。
ご返信ありがとうございます。私はちょうどあなたが「アクセスポイントを提供する」と言ったときに、あなたが何を意味するのかを迷っているだけです。これは__init__.pyファイルと関係がありますか? –
@Alty。あなたはモジュールの現在のフォルダをどの程度まで再構成できるのかをあなたの質問で明確にしておらず、あなたが使っていたものが何であるか分からなかったので、 "アクセスポイント"は単純なディレクトリかシンボリックリンクなどがあります。キーとなるのは、すべてのモジュールを1つのパッケージの下にまとめる方法を見つけることです。それから、管理が簡単になります。 – ekhumoro