繁体   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