stderr: ModuleNotFoundError: 在 python 中为云函数部署模拟器时,没有名为“firebase_functions”的模块

Tom*_*erg 5 python firebase google-cloud-functions google-cloud-firestore

生成步骤。\n1 为 Firebase 项目创建一个目录\n2 登录到 firebase\n3 转到项目目录并在终端中使用“firebase init firestore”\n4 在同一终端中使用“firebase init functions”\n5 在python\n6 输入 yes 来安装依赖项\n7 在 main.py 中设置安装时为您提供的默认云函数程序\n8 在项目终端中使用“firebase emulators:start”

\n

这是firebase项目的main.py

\n
# Welcome to Cloud Functions for Firebase for Python!\n# To get started, simply uncomment the below code or create your own.\n# Deploy with `firebase deploy`\n\nfrom firebase_functions import https_fn\nfrom firebase_admin import initialize_app\n\ninitialize_app()\n\n\n@https_fn.on_request()\ndef on_request_example(req: https_fn.Request) -> https_fn.Response:\n    return https_fn.Response("Hello world!")\n
Run Code Online (Sandbox Code Playgroud)\n

这是 firebase-debug.log

\n
[debug] [2023-06-06T16:56:43.521Z] Customer code is not Node\n[debug] [2023-06-06T16:56:43.521Z] Validating python source\n[debug] [2023-06-06T16:56:43.522Z] Building python source\n[debug] [2023-06-06T16:56:43.524Z] Could not find functions.yaml. Must use http discovery\n[debug] [2023-06-06T16:56:43.531Z] Running command with virtualenv: command="C:\\Users\\thirs\\Documents\\PythonFirebaseProjects\\pyFirebaseV1\\functions\\venv\\Scripts\\activate.bat", args=["","&&","python.exe","-c","\\"import firebase_functions; import os; print(os.path.dirname(firebase_functions.__file__))\\""]\n[debug] [2023-06-06T16:56:43.640Z] stderr: Traceback (most recent call last):\n  File "<string>", line 1, in <module>\n\n[debug] [2023-06-06T16:56:43.640Z] stderr: ModuleNotFoundError: No module named 'firebase_functions'\n\n[error] !!  functions: Failed to load function definition from source: Error: spawn "C:\\Users\\thirs\\Documents\\PythonFirebaseProjects\\pyFirebaseV1\\functions\\venv\\Scripts\\activate.bat" ENOENT {"metadata":{"emulator":{"name":"functions"},"message":"Failed to load function definition from source: Error: spawn \\"C:\\\\Users\\\\thirs\\\\Documents\\\\PythonFirebaseProjects\\\\pyFirebaseV1\\\\functions\\\\venv\\\\Scripts\\\\activate.bat\\" ENOENT"}}\n
Run Code Online (Sandbox Code Playgroud)\n

最后,这是输入“firebase emulators:start”后的终端

\n
PS C:\\Users\\thirs\\Documents\\PythonFirebaseProjects\\pyFirebaseV1> firebase emulators:start                 \ni  emulators: Starting emulators: functions, firestore\n!  ui: Emulator UI unable to start on port 4000, starting on 4001 instead.\n!  functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: auth, database, hosting, pubsub, storage\ni  firestore: Firestore Emulator logging to firestore-debug.log\n+  firestore: Firestore Emulator UI websocket is running on 9150.\ni  ui: Emulator UI logging to ui-debug.log\ni  functions: Watching "C:\\Users\\thirs\\Documents\\PythonFirebaseProjects\\pyFirebaseV1\\functions" for Cloud Functions...\n!!  functions: Failed to load function definition from source: Error: spawn "C:\\Users\\thirs\\Documents\\PythonFirebaseProjects\\pyFirebaseV1\\functions\\venv\\Scripts\\activate.bat" ENOENT\n\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \xe2\x9c\x94  All emulators ready! It is now safe to connect your app. \xe2\x94\x82\n\xe2\x94\x82 i  View Emulator UI at http://127.0.0.1:4001/               \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 Emulator  \xe2\x94\x82 Host:Port      \xe2\x94\x82 View in Emulator UI             \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 Functions \xe2\x94\x82 127.0.0.1:5001 \xe2\x94\x82 http://127.0.0.1:4001/functions \xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xa4\n\xe2\x94\x82 Firestore \xe2\x94\x82 127.0.0.1:8080 \xe2\x94\x82 http://127.0.0.1:4001/firestore \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n  Emulator Hub running at 127.0.0.1:4400\n  Other reserved ports: 4500, 9150\n\nIssues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files.\n
Run Code Online (Sandbox Code Playgroud)\n

我按照这些步骤进行了重现,并期望程序能够正常运行。当在项目终端中输入“pip show firebase_functions”时,它说它安装的是0.10版本。项目中的python版本是3.10.11,我使用的是windows。

\n

小智 0

我遇到了这个错误,原因是我的main.py文件中缺少一些导入

完整的导入是:

从firebase_functions导入firestore_fn,https_fn从firebase_admin导入initialize_app,firestore导入google.cloud.firestore

现在一切正常,希望有帮助:)