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

我正在尝试使用 prettyconf - https://github.com/osantana/prettyconf - 来使用 .env 文件。

我创建了一个 config.py 文件并将其放在我的脚本的同一文件夹中。

我的 config.py 是这个:

from prettyconf import config



class 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 settings

ModuleNotFoundError: 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 settings

ImportError: attempted relative import with no known parent package

但是如果让这样的:


from config import settings


GCT1015
浏览 208回答 2
2回答

红糖糍粑

您已经在cl_uploader文件夹中。尝试&nbsp;from config import settings:添加__init__.py这个:import&nbsp;os,&nbsp;sys sys.path.append(os.path.dirname(os.path.realpath(__file__)))然后,该目录中的所有文件都将位于sys.path.&nbsp;可能需要将文件名更改为cl_config.py以避免冲突。

呼如林

您的包被调用cl_uploader并且您在该包中有一个模块cl_uploader。避免这种名称重复。默认情况下,如果 python 可以找到模块或包,python 将首先在当前工作目录中查找,然后再遍历其他地方。因此,当您在cl_uploader文件夹内时,它将拾取cl_uploader模块而不是包。如果你在外面,它会取走包裹。总之:重命名cl_uploader.py为其他名称,一切都会正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python