quantum32043 Asked:2024-10-11 22:30:46 +0000 UTC2024-10-11 22:30:46 +0000 UTC 2024-10-11 22:30:46 +0000 UTC Python 中的绝对导入无法正常工作 772 我正在用Python FastAPI编写一个微服务应用程序,遇到了以下问题:当我尝试从微服务本身的任何目录绝对导入模块时,导入是从另一个微服务的类似目录发生的。 目录树附在下面: 在这种情况下,我尝试在main.py auth-service中导入模式,如下所示:from app.schemas import user as user_schemas,但最终导入是从类似的目录profile-service进行的。 同时,如果您尝试在gateway内执行相同的操作,那么那里的一切都会正常工作。 python 2 个回答 Voted Best Answer Amgarak 2024-10-12T01:22:31Z2024-10-12T01:22:31Z 当我打开PEP 8 时,我读到的是: 包和模块名称 模块应该有短的、全小写的名称。如果可以提高可读性,可以在模块名称中使用下划线。 Python 包也应该有短的、全小写的名称,尽管不鼓励使用下划线。 翻译: 包和模块名称 模块的短名称必须完全由小写字母组成。如果可以提高可读性,可以在模块名称中使用下划线。 Python 包的短名称也应完全由小写字母组成;不建议使用下划线。 虽然没有写任何关于PEP 8 的-内容,但据我了解,它们不用于模块/包的名称的原因是连字符(减号)是Python中的运算符,因此会导致导入错误。 所以根据建议,你需要使用这个包名: authservice。 带下划线的不太首选名称:auth_service quantum32043 2024-10-12T00:56:17Z2024-10-12T00:56:17Z 找到了解决方案,由于某种原因,所有包含连字符的名称都无法正常工作。重命名后一切正常
当我打开PEP 8 时,我读到的是:
包和模块名称
翻译:
包和模块名称
虽然没有写任何关于PEP 8 的
-内容,但据我了解,它们不用于模块/包的名称的原因是连字符(减号)是Python中的运算符,因此会导致导入错误。所以根据建议,你需要使用这个包名: authservice。
带下划线的不太首选名称:auth_service
找到了解决方案,由于某种原因,所有包含连字符的名称都无法正常工作。重命名后一切正常