在 WSL (Ubuntu) 中为 python3 安装 venv

Posted

技术标签:

【中文标题】在 WSL (Ubuntu) 中为 python3 安装 venv【英文标题】:Installing venv for python3 in WSL (Ubuntu) 【发布时间】:2020-08-15 02:49:18 【问题描述】:

我正在尝试在带有 Ubuntu 的 Linux 的 Windows 子系统上配置 venv

我尝试过的:

1) 安装venvpip(确切地说是pip3

pip3 install venv

我收到以下错误

ERROR: Could not find a version that satisfies the requirement venv (from versions: none)
ERROR: No matching distribution found for venv

2) 安装venvaptapt-get

sudo apt install python3-venv

在这种情况下,安装似乎完成了,但是当我尝试使用 python3 -m venv ./venv 创建虚拟环境时,我收到一个错误,告诉我要执行 apt-get install python3-venv(我刚刚这样做了!)

The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/mnt/c/Users/Vicubso/.../code/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

我还阅读了以下帖子 post 1, post 2 和其他几个。这些似乎都不能解决我的问题。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

这里没有什么对我有用,但在 WSL2 中这样做了:

apt-get update
apt-get install libpython3-dev
apt-get install python3-venv
python3.8 -m venv whatever

祝你好运!

【讨论】:

我认为,最近对 WSL 的更新使当前接受的答案无效。这通过 wsl.exe 对我有用,而其他建议给出了很多错误。 并且您需要 sudo 来执行您提到的命令。它适用于我,但不再适用于以前的命令。 +1 使用 WSL2 为我工作。就像上面的评论一样,我不能给你足够的压力:在 apt-get 上使用 sudo。【参考方案2】:

试一试这种方法:

安装点子:

sudo apt-get install python-pip

安装虚拟环境:

sudo pip install virtualenv

将您的虚拟环境存储在某处:

mkdir ~/.storevirtualenvs

现在你应该可以创建一个新的虚拟环境了

virtualenv -p python3 yourVenv

激活:

source yourVenv/bin/activate

要退出新的 virtualenv,只需 deactivate

【讨论】:

它似乎有效。但我不知道这是否是理想的解决方案。当我用virtualenv yourVenv 创建一个虚拟环境时(也许你的答案有错字?)它只有在我使用sudo 时才有效。另外...使用virtualenv 代替venv 有什么优势吗?不过还是非常感谢。至少现在我有东西可以继续我的工作了。 是的。请参阅此link。它讨论了运行程序的不同变体和环境。有些解释是针对 windows 而不是 linux 系统的。 非常感谢!现在对所有这些选项有了更好的理解。我接受你的回答,因为它解决了我的问题。 我在找到正确的存储库时遇到了一些问题......在安装 python-pip 时添加 --fix-missing 似乎可以解决问题。【参考方案3】:

这比它需要的更令人头疼。它似乎与 WSLWindows 文件系统映射问题有关。 This blog post 可能描述得更好,但网络是您需要在特定挂载上存储带有文件的附加元数据,如 in this MS devblog 所述。

我通过运行解决了这个问题:

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata

之后我无需 sudo 就可以创建 python venv。

【讨论】:

这是唯一对我有用的,非常感谢! 结合了这一点,以及 trpt4him 的响应有所帮助。谢谢!有什么方法可以启动 WSL,这样我就不必每次想创建一个新的环境时都这样做?【参考方案4】:

当您在/mnt/XXX(在 Windows 部分下)时会发生错误。

通过cd切换到Linux部分并再次运行python3 -m venv ./venv应该没问题

【讨论】:

【参考方案5】:

我收到了同样的错误消息,我的电脑上安装了 WSL(Ubuntu),最后我找到了这个文档: https://docs.microsoft.com/en-us/windows/python/web-frameworks#open-a-wsl---remote-window 具有讽刺意味的是,与我作为命令使用的唯一区别是名称,我使用的是 venv,然后我使用 .venv 再次运行命令,以便文件变成隐藏文件,并且它起作用了。希望它会帮助别人:)

【讨论】:

以上是关于在 WSL (Ubuntu) 中为 python3 安装 venv的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu16.04中为python3.5安装pygame?

为啥我的 WSL Ubuntu 指向不同的 Python 版本?

在win10的pycharm使用wsl中的python进行开发

在win10的pycharm使用wsl中的python进行开发

在 Ubuntu 14.04 中为 Python3.4 构建 PyQt5 的问题是由 qprinter.h 引起的,然后 pyuic5 错误

无法在 python 中为 ubuntu 16.04 上的 libreoffice 导入 uno