【发布时间】:2020-06-04 03:49:16
【问题描述】:
当我尝试使用 VS Code 中的调试工具在本地运行 Python 函数时,我的一个依赖项出现 ImportError(可能与它的依赖项无关,但它是 pyodbc)。
我的requirements.txt 文件中列出了依赖项,并且在云中部署和运行时,整个事情都可以正常工作。
所以,问题很简单:如何通过确保正确导入具有依赖关系的本地 Python 函数来测试它们?
添加更多信息:
启动调试器时,将在 Azure Functions 项目根目录中的 .venv 上运行 pip 安装。根据我的调试器输出,文件存在:
Requirement already satisfied: pyodbc in ./.venv/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (4.0.30)
日志如下:
[6/3/20 7:30:48 PM] Job host started
Hosting environment: Development
Content root path: /Users/my_user/Code/my_directory/azureFunctions
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.
Http Functions:
bhimodelv2: [GET,POST] http://localhost:7071/api/bhimodelv2
[6/3/20 7:30:53 PM] Host lock lease acquired by instance ID '000000000000000000000000391A9F18'.
[6/3/20 7:30:53 PM] INFO: Starting Azure Functions Python Worker.
[6/3/20 7:30:53 PM] INFO: Worker ID: e14f3a90-8abd-43f5-8148-90d9d3d98fe3, Request ID: 45d82e44-b75b-40c2-bc94-2afe387d401a, Host Address: 127.0.0.1:63322
[6/3/20 7:30:53 PM] INFO: Successfully opened gRPC channel to 127.0.0.1:63322
[6/3/20 7:30:53 PM] INFO: Received WorkerInitRequest, request ID 45d82e44-b75b-40c2-bc94-2afe387d401a
[6/3/20 7:30:53 PM] INFO: Received FunctionLoadRequest, request ID: 45d82e44-b75b-40c2-bc94-2afe387d401a, function ID: 4cf1e7c7-82ea-4921-aee1-e521bd6c37a1
[6/3/20 7:30:53 PM] Worker failed to function id 4cf1e7c7-82ea-4921-aee1-e521bd6c37a1.
[6/3/20 7:30:53 PM] Result: Failure
[6/3/20 7:30:53 PM] Exception: ImportError: dlopen(/Users/my_user/Code/my_directory/azureFunctions/.venv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
[6/3/20 7:30:53 PM] Referenced from: /Users/my_user/Code/my_directory/azureFunctions/.venv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so
[6/3/20 7:30:53 PM] Reason: image not found
[6/3/20 7:30:53 PM] Stack: File "/Users/my_user/.nvm/versions/node/v10.16.3/lib/node_modules/azure-functions-core-tools/bin/workers/python/3.7/OSX/X64/azure_functions_worker/dispatcher.py", line 243, in _handle__function_load_request
[6/3/20 7:30:53 PM] func_request.metadata.entry_point)
[6/3/20 7:30:53 PM] File "/Users/my_user/.nvm/versions/node/v10.16.3/lib/node_modules/azure-functions-core-tools/bin/workers/python/3.7/OSX/X64/azure_functions_worker/loader.py", line 66, in load_function
[6/3/20 7:30:53 PM] mod = importlib.import_module(fullmodname)
[6/3/20 7:30:53 PM] File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
[6/3/20 7:30:53 PM] return _bootstrap._gcd_import(name[level:], package, level)
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 983, in _find_and_load
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 983, in _find_and_load
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap_external>", line 728, in exec_module
[6/3/20 7:30:53 PM] File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[6/3/20 7:30:53 PM] File "/Users/my_user/Code/my_directory/azureFunctions/bhimodelv2/__init__.py", line 3, in <module>
[6/3/20 7:30:53 PM] import pyodbc
因此,在 pip 安装成功后确认文件存在于虚拟环境中之后,就会发生导入错误。
【问题讨论】:
标签: python azure azure-functions