私は過去1時間をGoogleとSOを使って過ごしました。まだ別のものを追加して申し訳ありませんが、答えはどれも私のためにはうまくいきません。兄弟ディレクトリからPythonクラスをインポートする
/VM/repo/project
で私のディレクトリ構造は次のとおりです。
__init__.py
scripts/
getSomething.py
__init__.py
classes/
project.py
db.py
__init__.py
====================
getSomething.py
from ..classes import project
from ..classes import db
==================
project.py
class PROJECT:
def __init__(self):
stuff
====================
db.py
class DB:
def __init__(self):
stuff
===========
私はエラーに取得
python getSomething.py
を実行しよう=========
Traceback (most recent call last):
File "scripts/getSomething.py", line 4, in < module >
from ..classes import project
ValueError: Attempted relative import in non-package
私はここで何が欠けていますか?
私は、各ディレクトリに '__init __。py'を追加することは、基本的にそれらのディレクトリをパッケージとして定義するという印象を受けましたか?私はパッケージの基本的な誤解をここに持っているかもしれません。なぜ、メインモジュールはパッケージ化されていないのですか? 第二に、私の目標はcronでスクリプトを実行することです。クラスをスクリプトに直接インポートする方法はありませんか?別のファイル 'main.py'をもう一つ作成することは、不必要に私に巻き込まれるようです。 – ShaneOH
@ShaneOH - 曖昧さを解決するために私の答えを編集しようとしました。 – mgilson
元の回答と編集は非常に役に立ちます。だから私は最後の質問が1つあります。このディレクトリ構造を維持し、スクリプトをメインモジュールとして直接実行したいのですが?だから、彼らはパッケージの一部である必要はありません。/classesモジュールを兄弟フォルダのメインモジュールにインポートするにはどうすればよいですか?そして、/ scriptsと/ projectから '__init __。py'を削除しますか? – ShaneOH