跳到内容


构建和调试代码

在 Linux/macOS 上的开发设置过程中出现“command not found”

在 Linux 或 macOS 上运行安装脚本(或任何脚本)时,您会看到类似以下形式的错误:

仅文本
: No such file or directory 1: #1/bin/bash
: No such file or directory 10: ./utils.sh
setup.sh: line 11: $'\r': command not found

这表明 .sh 脚本文件已保存为 Windows 样式的 CRLF 行尾,而不是 Linux/Unix 样式的 LF 行尾。

在 Visual Studio 或 Visual Studio Code 中打开脚本,您将在编辑器窗口的右下方看到一个行尾提示。

CRLF line ending hint

单击该提示并选择“LF”以更正行尾,然后重新运行脚本。

模型未找到

构建时,您会看到:

仅文本
error MSB3030: Could not copy the file "<path>\\ObjectDetectionNet\\assets\\yolov5m.onnx"
  because it was not found.

在尝试构建之前,请确保您已运行开发设置脚本。

端口已被占用

如果您看到:

Unable to start Kestrel.
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address 
   already in use.
要么 CodeProject.AI 已经在运行,要么另一个应用程序正在使用 5000 端口。

我们的第一个建议是不要再使用 5000 端口。这是一个保留端口,但并非所有操作系统都在积极使用它。我们更倾向于使用 32168 端口,因为它易于记忆,并且远离其他已用端口。

您可以通过编辑appsettings.json文件并更改CPAI_PORT变量的值来更改 CodeProject.AI 使用的外部端口。在演示应用程序中,您需要编辑端口设置以匹配新的端口。

如果失败,请关闭任何使用 5000 端口的应用程序(包括如果您尝试在 Visual Studio 中以开发模式运行的任何已安装的 CodeProject.AI 服务器版本)。

找不到自定义模型

安装 CodeProject.AI 服务器后,它将附带多个目标检测模块。所有模块的工作原理大致相同,区别在于支持的语言和平台以及使用的模型。

  1. 确保已启用对象检测(默认情况下已启用)
  2. 使用提供的自定义模型,或者

    a) 将您自己的模型添加到模块的自定义模型文件夹(例如,Python YOLO 检测器的C:\Program Files\CodeProject\AI\modules\ObjectDetectionYolo\custom-models,或 .NET 对象检测器的C:\Program Files\CodeProject\AI\modules\ObjectDetectionNet\custom-models,仅举两个模块为例)

    b) 指定一个包含模型的目录(请参阅Docker指南)

要指定不同的文件夹用于自定义模型,您可以:

  1. 启动时设置--Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR参数,**或者**
  2. 设置Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR环境变量,**或者**
  3. 在 ObjectDetectionYolo 文件夹中的 modulesettings.json 文件中设置CUSTOM_MODELS_DIR值,**或者**
  4. 设置全局覆盖(即将弃用!)变量MODELSTORE-DETECTION以指向您的自定义对象文件夹,**或者**
  5. (对于 Docker)将包含自定义模型的文件夹(例如C:\MyCustomModels)映射到对象检测的自定义资源文件夹(/app/modules/ObjectDetectionYolo/custom-models)。例如:

    仅文本
    docker run -p 32168:32168 --name CodeProject.AI-Server -d ^
      --mount type=bind,source=C:\ProgramData\CodeProject\AI\docker\data,target=/etc/codeproject/ai ^
      --mount type=bind,source=C:\MyCustomModels,target=/app/modules/ObjectDetectionYolo/custom-models,readonly 
        codeproject/ai-server
    

    这会挂载我本地系统上的C:\MyCustomModels目录,并将其映射到 Docker 容器中的/app/modules/ObjectDetectionYolo/custom-models 文件夹。现在,当 CodeProject.AI 服务器查找自定义模型列表时,它将在C:\MyCustomModels而不是/app/modules/ObjectDetectionYolo/custom-models中查找。

    请参阅API 参考 - CodeProject.AI 服务器

服务器启动失败

仅文本
System.ComponentModel.Win32Exception: The system cannot find the file specified.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

在尝试启动服务器之前,请确保您已运行开发设置脚本。

背景移除程序无法在 VS 调试 GPU 上运行

如果您的开发解决方案目录路径过长,则由于 Windows 文件名长度限制为 256 个字符,某些模块将无法工作。如果您看到以下错误:

仅文本
rembg_adapter.py:   File "C:\Users\matth\source\repos\codeproject\CodeProject.AI-Server-Private\src\modules\BackgroundRemover\bin\windows\python39\venv\lib\site-packages\numba\core\caching.py", line 662, in _save_overload
rembg_adapter.py: FileNotFoundError: [Errno 2] No such file or directory

只需将包含存储库的目录移动到较短的目录,例如C:\Dev,然后再次运行“清理”和“设置”。这是必需的,因为 Python 虚拟环境与旧目录结构具有硬链接。


© . All rights reserved.