[解決済み] pythonの相対的なインポートを説明できる人はいますか?[重複している]。
2022-04-21 18:25:43
質問
Pythonの相対インポートがどうしてもうまくいきません。それが機能しない簡単な例を作りました。
ディレクトリ構成は
__init__.py
start.py
parent.py
sub/
__init__.py
relative.py
/start.py
だけが含まれています。
import sub.relative
/sub/relative.py
には、ただ
from .. import parent
他のファイルはすべて空白です。
コマンドラインで以下を実行した場合。
$ cd /
$ python start.py
得ることができる。
Traceback (most recent call last):
File "start.py", line 1, in <module>
import sub.relative
File "/home/cvondrick/sandbox/sub/relative.py", line 1, in <module>
from .. import parent
ValueError: Attempted relative import beyond toplevel package
Python 2.6を使用しています。なぜこのようなことになるのでしょうか?このサンドボックスの例を動作させるにはどうしたらいいですか?
どのように解決するのですか?
パッケージ "sub"からインポートしています。
start.py
があったとしても、それ自体がパッケージに含まれるわけではありません。
__init__.py
が存在する。
の1つ上のディレクトリからプログラムを起動する必要があります。
parent.py
:
./start.py
./pkg/__init__.py
./pkg/parent.py
./pkg/sub/__init__.py
./pkg/sub/relative.py
と
start.py
:
import pkg.sub.relative
これで pkg がトップレベルのパッケージとなり、相対インポートがうまくいくはずです。
現在のレイアウトを維持したいのであれば、単に
import parent
. なぜなら
start.py
でインタープリタを起動すると、そのディレクトリに
start.py
は、pythonのパスにあります。
parent.py
は別のモジュールとしてそこに住んでいます。
また、トップレベルの
__init__.py
ディレクトリツリーのさらに上のスクリプトに何もインポートしないのであれば。
関連
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み] データ型が理解できない
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] 誰かPythonで__all__を説明してくれませんか?
-
[解決済み] 億の相対的輸入
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Python 3での相対インポート
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] 億の相対的輸入