本地运行Python Azure函数的VSCode因ModuleNotFoundE而失败

2024-10-17 08:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的vscode1.40.0最近在macos10.14.6上升级,在venv中使用python3.6.5。在升级之前,我的代码还在工作(上个星期,我最后一次做一些工作)。这个工作区是一组Azure函数,具有以下功能启动.json运行它的配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Python Functions",
      "type": "python",
      "request": "attach",
      "port": 9091,
      "preLaunchTask": "func: host start",
      "logToFile": true,
    }
  ]
}

目录结构为:

^{pr2}$

当我在VSCode中运行代码时,我得到以下ModuleNotFoundError:

[11/13/19 5:17:08 PM] Executed 'Functions.TLoginEvents' (Failed, Id=c6e6b342-4250-4041-8d19-8ce4ae8bb736)
[11/13/19 5:17:08 PM] System.Private.CoreLib: Exception while executing function: Functions.TLoginEvents. System.Private.CoreLib: Result: Failure
[11/13/19 5:17:08 PM] Exception: ModuleNotFoundError: No module named 'SharedCode'
[11/13/19 5:17:08 PM] Stack:   File "/usr/local/Cellar/azure-functions-core-tools/2.7.1846/workers/python/3.6/OSX/X64/azure_functions_worker/dispatcher.py", line 242, in _handle__function_load_request
[11/13/19 5:17:08 PM]     func_request.metadata.entry_point)
[11/13/19 5:17:08 PM]   File "/usr/local/Cellar/azure-functions-core-tools/2.7.1846/workers/python/3.6/OSX/X64/azure_functions_worker/loader.py", line 66, in load_function
[11/13/19 5:17:08 PM]     mod = importlib.import_module(fullmodname)
[11/13/19 5:17:08 PM]   File "/Users/dylankaufman/Documents/Projects/SH/Data Pipeline/env/lib/python3.6/importlib/__init__.py", line 126, in import_module
[11/13/19 5:17:08 PM]     return _bootstrap._gcd_import(name[level:], package, level)
[11/13/19 5:17:08 PM]   File "/Users/dylankaufman/Documents/Projects/SH/Azure Functions/TLoginEvents/tlogins.py", line 1, in <module>
[11/13/19 5:17:08 PM]     from SharedCode import FunctionApp
[11/13/19 5:17:08 PM] .

虽然我以前从未注意到,但我确实发现它非常奇怪,堆栈跟踪似乎在为一个不同于我实际运行的项目(数据管道)查找env。当前的项目(Azure函数)是通过批量复制原始目录创建的,但我认为env的全部意义在于它是本地的。。。(我对Python&VSCode还是比较陌生的,所以如果有人能解释一下,或者指出能解释的东西,我会很感激的)。在

也就是说,我认为这不是真正的问题。如果我在终端窗口的同一个env中运行python3(甚至在VSCode中),我可以很好地运行导入,如下所示(这是在一个独立的终端窗口中):

Dylans-iMac:Azure Functions dylankaufman$ source ./env/bin/activate
(env) Dylans-iMac:Azure Functions dylankaufman$ python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from SharedCode import FunctionApp
>>> import datetime
>>> app = FunctionApp.FunctionApp('test', datetime.datetime.utcnow())
>>> app.functionName
'test'
>>> 

如果有用,这里是vscode设置.json公司名称:

{
  "python.pythonPath": "${workspacefolder}/env/bin/python",
  "azureFunctions.projectRuntime": "~2",
  "azureFunctions.projectLanguage": "Python",
  "azureFunctions.templateFilter": "Verified",
  "azureFunctions.deploySubpath": "Azure Functions.zip",
  "azureFunctions.preDeployTask": "func: pack --build-native-deps",
  "files.exclude": {
    "obj": true,
    "bin": true
  },
  "azureFunctions.pythonVenv": "env",
  "debug.internalConsoleOptions": "neverOpen"
}

(注意,我今天添加了${workspacefolder}作为故障排除的一部分,但是没有用)

感谢您提供的任何帮助/见解!在

迪伦


Tags: inpyimportenvlinefunctionsazurefile