[英]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.py
和backend/conf.py
正在使用的模塊在兩個包api
和scheduled
。
在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.