簡體   English   中英

在 wsl2 和 onedrive 上創建虛擬環境的問題

[英]Issue with creating virtual environment on wsl2 and onedrive

我正在使用 Linux (WSL2) 的 Windows 子系統,並在 Windows 10 機器上使用 rclone 安裝 OneDrive。 在本地目錄中使用 WSL2 時,我可以為項目創建虛擬環境:

python -m venv myenv/

但是,如果我在 OneDrive 上的目錄中運行此命令,則會收到錯誤消息:

Error: [Errno 5] Input/output error: 'lib' -> '/home/andrew/onedrive/myproject/venv/lib64'

如果我查看 myproject 目錄,我可以看到該目錄 venv 已創建。 然而它是不完整的,因為它只有“lib”和“include”子目錄。 當它被正確創建時(即,在不在 OneDrive 上的目錄中),它具有“lib”、“include”、“bin”、“lib64”、“share”和“pyvenv.cfg”。

“lib64”是在正常安裝中指向“lib”的符號鏈接。 在上面的錯誤消息中,似乎 lib 實際上指向 lib64,所以我想這是輸入/輸出錯誤?

當通過 rclone 掛載並使用 WSL2 時,有沒有辦法讓 venv 在 OneDrive 目錄上工作?

我的預感是,Rclone 的工作方式導致了您的問題。 它聲稱是“受rsync啟發”,這意味着它並不是真正的“掛載”,而是“同步”雲存儲。

我在一個新的 WSL 實例中快速安裝了rclone ,我看到了與您遇到的相同的“輸入/輸出錯誤”。

我猜即使在“完整”的 Linux 安裝下,您也會看到同樣的問題。 換句話說,我懷疑這與 WSl 和rclone之間的交互有什么關系。 可能更多的是關於 Python 的venv模塊和rclone之間的交互。 我不確定,但我懷疑rclone是為“實時”使用而設計的。 更重要的是能夠從 Linux 訪問(和寫入)雲存儲提供商上的文件。

好消息是可能有替代方案。 Windows 自動使您的 OneDrive 文件夾在%userprofile%\OneDrive中可用。 在 WSL 中,您可以通過以下方式訪問它:

cd $(powershell.exe -c 'Write-Host -NoNewLine $env:userprofile' | xargs -0 wslpath)/OneDrive

這通常是/mnt/c/Users/<yourusername>/OneDrive

從那里開始, python3 -m venv myvenv/對我來說正常工作。

也就是說,我強烈建議不要在 WSL2 中這樣做,因為 NTFS 文件的性能非常糟糕。 如果確實需要,最好使用 WSL1 實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM