【问题标题】:ModuleNotFoundError when using local dependencies使用本地依赖项时出现 ModuleNotFoundError
【发布时间】:2019-12-09 19:51:08
【问题描述】:

repo 在我的机器上工作,但在 gcloud 上不工作。

repo 的结构(在 Google Cloud Source Repo 上):

project/
├── localdep.py
└── mylocalpackage/
    └── main.py

在 main.py 中:

import localdep

但我收到以下错误: ModuleNotFoundError: No module named 'localdep'

我做错了什么?!在我的机器上的 Pycharm 上运行这个没有问题,但是当我推送到 gcloud 时......

【问题讨论】:

  • 无论如何我都不是 Python 专家,但我在 The import system 进行了快速学习。从错误中可以看出您的localdep 正在被搜索但未找到。是否可以像将 localdep.py 与 main.py 放在同一文件夹/目录中一样简单?
  • 是的,可以这样做,但将来我将添加更多本地包,我需要能够将其组织到文件夹中。我还查看了文档并随后尝试了from ..localdep import *
  • 也试过from ..package import localdep。当我这样做时,我得到ImportError: attempted relative import with no known parent package

标签: google-cloud-functions google-cloud-source-repos


【解决方案1】:

正确的结构应该是 main.py 位于顶层,其他文件位于嵌套文件夹中。你可以看看这个,它谈到了Structuring Your Project

此外,我尝试了from ..localdep import *from ..package import localdep,以及其他类似from ... import localdep,但我收到ImportError: attempted relative import with no known parent packageValueError: attempted relative import beyond top-level package

值得重新考虑您的项目结构。

【讨论】:

  • 谢谢你的链接,我现在就读。但问题是,我希望使用相同的localdep 拥有多个 Gcloud 函数,并且我认为将它们全部放在同一个存储库中是实现此目的的理想方式。你认为有更好的方法吗?
  • 如果您的代码依赖于 localdep,一切都取决于您如何构建代码以尽可能多地重用代码,同时始终牢记您自己的业务逻辑。 Here你可以找到关于从源代码管理部署的文档,以防万一你没有看。
猜你喜欢
  • 2021-01-25
  • 2019-04-29
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 2011-05-22
  • 2021-04-07
相关资源
最近更新 更多