gpt4 book ai didi

Python 没有命名的模块

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:06 25 4
gpt4 key购买 nike

我有一个自定义模块,我正在尝试从层次结构下的文件夹中读取该模块:

> project-source
/tests
/provider
my_provider.py
settings_mock.py
__init__.py

我正在尝试从 my_provider.py 调用

import tests.settings_mock as settings

命令行示例:

project-source> python tests/provider/my_provider.py

错误:

... ImportError: No module named settings_mock

我不断收到没有名为settings_mock的模块错误。我已经将 project_source 路径导出到 PYTHONPATH。我通过在包的根目录中创建一个 __init__.py 文件对包进行了测试,但错误没有改变。

在 cd 项目源代码时,我可以打印 settings_mock.py 属性

>>> import tests.settings_mock as settings
>>> print settings.storage_provider
correct storage provider value

有人能指出我的错误吗?谢谢!

最佳答案

你只有一个小错误。要使用子文件夹,您需要 __init__.py,而不是问题中所述的 init.py。区别在于__init__是Python的内置函数,而init不是。每个子文件夹中都有这个文件告诉 pyhon 解释器该文件夹是一个需要初始化的“包”。

更新:需要注意的是,python 通常从脚本所在的当前目录运行。如果您的可执行主脚本是 my_provider.py,那么它不会知道要导入什么,因为主脚本位于比它尝试导入的对象更低的目录中。将其视为一个层次结构。脚本只能导入它们下面的东西。如果 settings_mock 需要导入某些内容,请尝试将可执行文件与该文件中的其他所有内容分开。

关于Python 没有命名的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com