Google app engine deployment fails- Error while finding module specification for 'pip' (AttributeError: module '__main__' has no attribute '__file__')

Google app engine deployment fails- Error while finding module specification for 'pip' (AttributeError: module '__main__' has no attribute '__file__')

我们正在使用命令提示符 c:\gcloud app deploy app.yaml,但出现以下错误:

Running "python3 -m pip install --requirement requirements.txt --upgrade --upgrade-strategy only-if-needed --no-warn-script-location --no-warn-conflicts --force-reinstall --no-compile (PIP_CACHE_DIR=/layers/google.python.pip/pipcache PIP_DISABLE_PIP_VERSION_CHECK=1)"
Step #2 - "build": /layers/google.python.pip/pip/bin/python3: Error while finding module specification for 'pip' (AttributeError: module '__main__' has no attribute '__file__')
Step #2 - "build": Done "python3 -m pip install --requirement requirements.txt --upgr..." (34.49892ms)
Step #2 - "build": Failure: (ID: 0ea8a540) /layers/google.python.pip/pip/bin/python3: Error while finding module specification for 'pip' (AttributeError: module '__main__' has no attribute '__file__')
Step #2 - "build": --------------------------------------------------------------------------------
Step #2 - "build": Running "mv -f /builder/outputs/output-5577006791947779410 /builder/outputs/output"
Step #2 - "build": Done "mv -f /builder/outputs/output-5577006791947779410 /builder/o..." (12.758866ms)
Step #2 - "build": ERROR: failed to build: exit status 1
Finished Step #2 - "build"
ERROR
ERROR: build step 2 "us.gcr.io/gae-runtimes/buildpacks/python37/builder:python37_20211201_3_7_12_RC00" failed: step exited with non-zero status: 145

我们的Requirements.txt如下。我们目前使用 Python 3.7 标准应用程序引擎

firebase_admin==3.0.0
sendgrid==6.9.3
google-auth==1.35.0
google-auth-httplib2==0.1.0
jinja2==3.0.3
MarkupSafe==2.0.1
pytz==2021.3
Flask==2.0.2
twilio==6.46.0
httplib2==0.20.2
requests==2.24.0
requests_toolbelt==0.9.1
google-cloud-tasks==2.7.1
google-cloud-logging==1.15.1
googleapis-common-protos==1.54.0

请 help.The 在更新 requirements.txt 文件之前上面的代码运行良好。我们尝试删除 gunicorn 以允许系统根据文档 here.

获取最新版本

我们有一个子目录结构,用于存储控制器中的所有 .py 文件和模型中的数据库定义。我们的 main.py 有以下 -

sys.path.append(os.path.join(os.path.dirname(__file__), '../controllers'))
sys.path.append(os.path.join(os.path.dirname(__file__), '../models'))

有谁知道如何调试这个错误 - Error while finding module specification for 'pip' (AttributeError: module '__main__' has no attribute '__file__')。这是什么意思?

您的安装工具版本可能被取消:

https://pypi.org/project/setuptools/60.3.0/

不知道如何在没有有效 pip 的情况下解决这个问题。

通过在安装 pip-tools 之前安装以前版本的 60.2.0 的 setuptools 帮助我得到它 运行。

pip install setuptools==60.2.0

setuptools 的 60.3.0 版有一个导致上述 AttributeError 的错误,请参阅:https://github.com/pypa/setuptools/issues/3002

从那以后它就被Pypi拉走了:

Yanked files are always ignored, unless they are the only file that matches a version specifier that "pins" to an exact version using either == (without any modifiers that make it a range, such as .*) or ===. Matching this version specifier should otherwise be done as per PEP 440 for things like local versions, zero padding, etc.

来源:https://www.python.org/dev/peps/pep-0592/

您现在可以做的是明确传递 setuptools 包的版本,例如使用版本 60.2.0 或 60.3.1。

Setuptools 60.3.1 is out now. GitHub Link here.

我在部署 Google Cloud Function 时遇到了同样的问题。错误

cloud function Error while finding module specification for 'pip' (AttributeError: module 'main' has no attribute 'file'); Error ID: c84b3231

在注释掉 requirements.txt 中的一些包后出现,但这并不重要,很可能不是导致它的原因。我猜这更多是 Google 存储 中 不稳定的问题,因为我正在处理的同一个 Cloud Function 已经在一段时间之前丢失了它的存档,所有的突然,不知从何而来,显示:

Archive not found in the storage location cloud function

而且我没有删除或更改任何可能解释这一点的内容,正如 Archive not found in the storage location: Google Function 所建议的那样。 虽然这个答案有一个非常有趣的猜测,至少可以解释第一次出现“未找到存档”错误并因此使 CF 不稳定:我可能在浏览期间更改了存储桶的时区城市Google 存储。时间太久了,但我知道我浏览过 GS,因此,我不能排除这一点。引用:“如果 GCS 存储桶的区域与您的云功能区域不匹配,它也可能会发生[找不到存档错误]。”

在这次“未找到存档”崩溃之后,我手动添加了 main.pyrequirements.txt 并再次用备份中的代码填充了它们。这工作了一段时间,但 Google 存储中似乎存在一些普遍的不稳定。因此,请始终保留已部署脚本的备份。

然后,在那个已经不稳定的Cloud Function中得到这个问题的pip错误后,等待一两天,Google Function再次显示

Archive not found in the storage location cloud function

如果您 运行 在 Cloud Function 中遇到此 pip 错误,您可能会考虑 updating pip in the "requirements.txt" 但如果您在这样一个不稳定的 Cloud Function 中,更好的解决方法似乎是创建一个新的 Cloud Functions 并将所有内容复制到其中。

pip 错误可能只是表明源脚本,在本例中为 requirements.txt,不能是 运行,因为源代码不再完全嵌入或丢失了一些嵌入 Google 存储。

或者你再给那个 Cloud Function 一次机会 edit,转到 Source 选项卡,单击下拉菜单 Source code 选择 Inline Editor 并添加 main.pyrequirements.txt 手动 (Runtime: Python).