为了账号安全,请及时绑定邮箱和手机立即绑定

试图从另一个文件导入一个类,但我的测试失败了

试图从另一个文件导入一个类,但我的测试失败了

GCT1015 2023-05-16 14:36:05
我正在尝试使用 prettyconf - https://github.com/osantana/prettyconf - 来使用 .env 文件。我创建了一个 config.py 文件并将其放在我的脚本的同一文件夹中。我的 config.py 是这个:from prettyconf import configclass Settings:    ENVIRONMENT = config(        'ENVIRONMENT',        default='dev',        cast=config.option({'dev': 'dev', 'int': 'int', 'prod': 'prod'}),    )    LOG_LEVEL = config('LOG_LEVEL', default='INFO') settings = Settings()在我的脚本中,我以这种方式导入我的 config.py :from cl_uploader.config import settings但是我收到了这个错误信息:Traceback (most recent call last):  File "cl_uploader.py", line 7, in <module>    from cl_uploader.config import settings  File "/home/myfolder/Doing/folder/cl_uploader/cl_uploader.py", line 7, in <module>    from cl_uploader.config import settingsModuleNotFoundError: No module named 'cl_uploader.config'; 'cl_uploader' is not a package我试图更改为这样的相对路径:from .config import settings但是我得到了这个错误:Traceback (most recent call last):  File "cl_uploader.py", line 7, in <module>    from .config import settingsImportError: attempted relative import with no known parent package但是如果让这样的:from config import settings
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您已经在cl_uploader文件夹中。尝试 from config import settings

添加__init__.py这个:

import os, sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)))

然后,该目录中的所有文件都将位于sys.path. 可能需要将文件名更改为cl_config.py以避免冲突。


查看完整回答
反对 回复 2023-05-16
?
呼如林

TA贡献1798条经验 获得超3个赞

您的包被调用cl_uploader并且您在该包中有一个模块cl_uploader。避免这种名称重复。

默认情况下,如果 python 可以找到模块或包,python 将首先在当前工作目录中查找,然后再遍历其他地方。

因此,当您在cl_uploader文件夹内时,它将拾取cl_uploader模块而不是包。如果你在外面,它会取走包裹。

总之:重命名cl_uploader.py为其他名称,一切都会正常工作。


查看完整回答
反对 回复 2023-05-16
  • 2 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信