簡體   English   中英

無法在子包中導入父包的模塊

[英]Cannot import modules of parent packages inside child packages

我有一個包含2個子程序包的父程序包。 看起來像這樣

backend
   __init__.py
   conf.py
   db.py
   connections.py
   /api
      __init__.py
      register.py
      api.py
   /scheduled
      __init__.py
      helpers.py

All the __init__.py files are empty.

在代碼backend/connections.pybackend/conf.py正在使用的模塊在兩個包apischeduled

在register.py我有類似的代碼

from backend.conf import *
from backend.connections import *

現在當我做python register.py我得到這個錯誤

ImportError: No module named backend.conf

另外,當我from backend.conf import *更改from ..conf import *from .. import conf我收到此錯誤

ValueError: Attempted relative import in non-package

我通過上述錯誤了解到的是python並未將上述文件夾視為軟件包。 但是我在所有文件夾中都有__init__.py 怎么了?

當您運行python register.py ,您的backend/register.py文件將用作程序的__main__模塊,而不是用作backend軟件包中的模塊。 此外,Python導入路徑不會自動包含包含backend目錄的目錄,這可能是造成問題的原因。

一種可行的方法是從項目的頂級目錄中以python -m backend.register身份運行程序(或設置PYTHONPATH以便找到該模塊)。 這將在常規導入路徑上搜索腳本,然后將其作為主程序運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM