dify本地开发环境搭建

347 阅读2分钟

docker是个好东西

devcontariner up 就可构建好一个本地的docker环境。和物理机的环境隔离。避免了各种奇葩的环境问题 如何进入这个容器进行开发呢?

vscode也是个好工具

遇到的问题

  • Installing gmpy2 (2.1.5): Failed

    ChefBuildError
    
    Backend subprocess exited when trying to invoke build_wheel
    
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib.linux-aarch64-cpython-310
    creating build/lib.linux-aarch64-cpython-310/gmpy2
    copying gmpy2/__init__.py -> build/lib.linux-aarch64-cpython-310/gmpy2
    running egg_info
    writing gmpy2.egg-info/PKG-INFO
    writing dependency_links to gmpy2.egg-info/dependency_links.txt
    writing top-level names to gmpy2.egg-info/top_level.txt
    reading manifest file 'gmpy2.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'COPYING'
    adding license file 'COPYING.LESSER'
    writing manifest file 'gmpy2.egg-info/SOURCES.txt'
    copying gmpy2/__init__.pxd -> build/lib.linux-aarch64-cpython-310/gmpy2
    copying gmpy2/gmpy2.h -> build/lib.linux-aarch64-cpython-310/gmpy2
    copying gmpy2/gmpy2.pxd -> build/lib.linux-aarch64-cpython-310/gmpy2
    running build_ext
    building 'gmpy2.gmpy2' extension
    creating build/temp.linux-aarch64-cpython-310
    creating build/temp.linux-aarch64-cpython-310/src
    gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I./src -I/tmp/tmpjyjp54tr/.venv/include -I/usr/local/include/python3.10 -c src/gmpy2.c -o build/temp.linux-aarch64-cpython-310/src/gmpy2.o -DSHARED=1
    In file included from src/gmpy2.c:517:
    src/gmpy2.h:82:10: fatal error: mpfr.h: No such file or directory
     82 | #include <mpfr.h>
        |          ^~~~~~~~
    compilation terminated.
    error: command '/usr/bin/gcc' failed with exit code 1
    
    
    at /usr/local/py-utils/venvs/poetry/lib/python3.10/site-packages/poetry/installation/chef.py:164 in _prepare
      160│ 
      161│                 error = ChefBuildError("\n\n".join(message_parts))
      162│ 
      163│             if error is not None:
    → 164│                 raise error from None
      165│ 
      166│             return path
      167│ 
      168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
    
    Note: This error originates from the build backend, and is likely not a problem with poetry but with gmpy2 (2.1.5) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "gmpy2 (==2.1.5)"'.
    
    

    解决方法:安装一些图片相关的基础包 sudo apt update && sudo apt-get install -y libgmp-dev libmpfr-dev libmpc-dev

  • pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg
    解决方法:
    sudo apt install ffmpeg

  • 容器内时间不是北京时间
    解决方法:
    sudo apt install ntpdate && sudo ntpdate cn.pool.ntp.org
    sudo mv /etc/localtime /etc/localtime.bak
    sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  • 前端进程,(npm run dev / yarn dev)正常运行一段时间,莫名其妙地退出,也没有异常日志输出
    www.reddit.com/r/nextjs/co…

    github.com/vercel/next…

    可能的解决方法: 删除_next 和node_modules目录,重新执行 npm install ,npm run dev