在 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) 安装venv
到pip
(确切地说是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) 安装venv
到apt
和apt-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 错误