导入Python包的混淆
我有一个包叫做 celery,还有一个文件也叫 celery。
当我输入 import celery 的时候,它试图导入的是那个 celery 文件,而不是 celery 包。结果它说无法导入 Celery。
from __future__ import absolute_import
from celery import Celery
celery = Celery('celery_app',
broker='redis://localhost:6379/0',
backend='amqp://',
include=['celery_app.tasks'])
# Optional configuration, see the application user guide.
celery.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600,
)
if __name__ == '__main__':
celery.start()
就像下面这样。有没有办法解释一下,怎么才能导入包而不是文件。
编辑:
我试过了
from __future__ import absolute_import
import sys
del sys.path[0]
from celery import Celery
但结果还是一样。当我在 Python 命令行里运行那些命令时,并没有报错。是不是我漏掉了什么?
1 个回答
1
当我在Python命令行中尝试那些命令时,没有出现任何错误。我是不是漏掉了什么?
我真的不推荐像大家说的那样重命名你的文件,不过你可以试试
import sys, os
[sys.path.remove(i) for i in sys.path if i == os.getcwd() or i == '']
from celery import Celery
另外,你在导入absolute_import
,但看起来并没有使用它(文档)。当你从本地文件celery.py
导入时
from .celery import my_func