我正在嘗試從 MacBook Air M1 運行我的一個 Docker 作業專案,但在執行docker-compose up. 顯然它無法找到Python安裝,即使我都可以做python --version,并python3 --version從終端。我對 Docker 比較陌生,但我嘗試對所有可能的事情進行故障排除以解決此錯誤
#8 91.79 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
#8 91.79 error /app/node_modules/node-sass: Command failed.
#8 91.79 Exit code: 1
#8 91.79 Command: node scripts/build.js
#8 91.79 Arguments:
#8 91.79 Directory: /app/node_modules/node-sass
#8 91.79 Output:
#8 91.79 Building: /usr/local/bin/node /app/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
#8 91.79 gyp info it worked if it ends with ok
#8 91.79 gyp verb cli [
#8 91.79 gyp verb cli '/usr/local/bin/node',
#8 91.79 gyp verb cli '/app/node_modules/node-gyp/bin/node-gyp.js',
#8 91.79 gyp verb cli 'rebuild',
#8 91.79 gyp verb cli '--verbose',
#8 91.79 gyp verb cli '--libsass_ext=',
#8 91.79 gyp verb cli '--libsass_cflags=',
#8 91.79 gyp verb cli '--libsass_ldflags=',
#8 91.79 gyp verb cli '--libsass_library='
#8 91.79 gyp verb cli ]
#8 91.79 gyp info using [email protected]
#8 91.79 gyp info using [email protected] | linux | arm64
#8 91.79 gyp verb command rebuild []
#8 91.79 gyp verb command clean []
#8 91.79 gyp verb clean removing "build" directory
#8 91.79 gyp verb command configure []
#8 91.79 gyp verb find Python Python is not set from command line or npm configuration
#8 91.79 gyp verb find Python Python is not set from environment variable PYTHON
#8 91.79 gyp verb find Python checking if "python3" can be used
#8 91.79 gyp verb find Python - executing "python3" to get executable path
#8 91.79 gyp verb find Python - "python3" is not in PATH or produced an error
#8 91.79 gyp verb find Python checking if "python" can be used
#8 91.79 gyp verb find Python - executing "python" to get executable path
#8 91.79 gyp verb find Python - "python" is not in PATH or produced an error
#8 91.79 gyp verb find Python checking if "python2" can be used
#8 91.79 gyp verb find Python - executing "python2" to get executable path
#8 91.79 gyp verb find Python - "python2" is not in PATH or produced an error
#8 91.79 gyp ERR! find Python
#8 91.79 gyp ERR! find Python Python is not set from command line or npm configuration
#8 91.79 gyp ERR! find Python Python is not set from environment variable PYTHON
#8 91.79 gyp ERR! find Python checking if "python3" can be used
#8 91.79 gyp ERR! find Python - "python3" is not in PATH or produced an error
#8 91.79 gyp ERR! find Python checking if "python" can be used
#8 91.79 gyp ERR! find Python - "python" is not in PATH or produced an error
#8 91.79 gyp ERR! find Python checking if "python2" can be used
#8 91.79 gyp ERR! find Python - "python2" is not in PATH or produced an error
#8 91.79 gyp ERR! find Python
#8 91.79 gyp ERR! find Python **********************************************************
#8 91.79 gyp ERR! find Python You need to install the latest version of Python.
#8 91.79 gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
#8 91.79 gyp ERR! find Python you can try one of the following options:
#8 91.79 gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
#8 91.79 gyp ERR! find Python (accepted by both node-gyp and npm)
#8 91.79 gyp ERR! find Python - Set the environment variable PYTHON
#8 91.79 gyp ERR! find Python - Set the npm configuration variable python:
#8 91.79 gyp ERR! find Python npm config set python "/path/to/pythonexecutable"
#8 91.79 gyp ERR! find Python For more information consult the documentation at:
#8 91.79 gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
#8 91.79 gyp ERR! find Python **********************************************************
#8 91.79 gyp ERR! find Python
#8 91.79 gyp ERR! configure error
#8 91.79 gyp ERR! stack Error: Could not find any Python installation to use
#8 91.79 gyp ERR! stack at PythonFinder.fail (/app/node_modules/node-gyp/lib/find-python.js:302:47)
#8 91.79 gyp ERR! stack at PythonFinder.runChecks (/app/node_modules/node-gyp/lib/find-python.js:136:21)
#8 91.79 gyp ERR! stack at PythonFinder.<anonymous> (/app/node_modules/node-gyp/lib/find-python.js:179:16)
#8 91.79 gyp ERR! stack at PythonFinder.execFileCallback (/app/node_modules/node-gyp/lib/find-python.js:266:16)
#8 91.79 gyp ERR! stack at exithandler (node:child_process:404:5)
#8 91.79 gyp ERR! stack at ChildProcess.errorhandler (node:child_process:416:5)
#8 91.79 gyp ERR! stack at ChildProcess.emit (node:events:390:28)
#8 91.79 gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
#8 91.79 gyp ERR! stack at one rrorNT (node:internal/child_process:477:16)
#8 91.79 gyp ERR! stack at processTicksAndRejections (node:internal/process/task_queues:83:21)
#8 91.79 gyp ERR! System Linux 5.10.47-linuxkit
#8 91.79 gyp ERR! command "/usr/local/bin/node" "/app/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
#8 91.79 gyp ERR! cwd /app/node_modules/node-sass
#8 91.79 gyp ERR! node -v v16.13.0
#8 91.79 gyp ERR! node-gyp -v v7.1.2
#8 91.79 gyp ERR! not ok
#8 91.79 Build failed with error code: 1
我嘗試了錯誤提示的所有內容 - 設定 python 的路徑變數,并嘗試將 NPM 的配置設定為 python 的路徑,但沒有運氣......
我還嘗試將 node 降級到 v16,因為根據檔案,node-sass 6.0.1 與 node v17 不兼容
我通過自制軟體安裝了 python 3.9.8,并運行which python3輸出/opt/homebrew/bin/python3
node -v: v16.13.0
npm -v: v8.1.0
echo $PATH: /Library/Frameworks/Python.framework/Versions/3.10/bin /opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
npm config list:
prefix = "/opt/homebrew"
; "global" config from /opt/homebrew/etc/npmrc
; python = "/opt/homebrew/opt/[email protected]/libexec/bin" ; overridden by user
; "user" config from /Users/**username**/.npmrc
python = "/opt/homebrew/opt/[email protected]/libexec/bin"
uj5u.com熱心網友回復:
問題:
python 安裝在您的 macbook 本地,但不在 docker 容器(這是一個隔離的虛擬作業系統)內。
解決方案
您需要在運行 nodejs 腳本或 npm 命令的同一容器中安裝 python。
在 dockerFile 中拉出你的 nodejs 影像后嘗試添加這個
RUN apt-get update || : && apt-get install python -y
那是針對 debian 或基于 debian 的 linux 發行版...(如果您有基于 debian 的官方 Node 映像,那么在您拉取映像運行后,上面的行應該可以正常作業,您需要在同一容器中安裝 python)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362022.html
標籤:Python 节点.js 新产品经理 docker-compose 节点sass
上一篇:Node.jsMySQL查詢中的Try/Catch是冗余的嗎?
下一篇:為什么子域將請求重定向回父域?
