今天受邀幫同事調試uv卡住不動的問題,同樣的代碼已經在別的服務器跑起來了,換了一臺服務器之后,執行uv sync --frozen沒有按預期創建虛擬環境和安裝依賴。
1. 鏡像源是已經配置好的,pip install也能很快安裝包。
2. 查看了uv.lock 文件的內容,里面的index url是沒錯的。
解決:
Ctrl+C退出uv命令,然后使用python -m venv .venv創建虛擬環境
發現這一步就報錯了,于是執行apt install python3.12-venv安裝系統包
接著使用source .venv/bin/activate激活虛擬環境,然后執行
uv sync --frozen --verbose
通過輸出信息找到卡住的原因,原來uv一直在嘗試從github下載Python3.11
由于是內網環境,不通github.com,所以導致卡著不動。
uv下載3.11的原因是pyproject.toml里指定的是requires-python='>=3.11',然而服務器(ubuntu24)自帶的是Python3.12
在終端執行如下命令:
uv python pip python3.12
uv sync --frozen --verbose
顯式指定當前項目要的是3.12,并重新安裝依賴,問題就解決了。
當然也可以修改pyproject.toml的requires-python為">=3.12"或"==3.12.*",然后重新uv lock