Python3.6在创建虚拟环境时出现错误

5
我正在尝试使用Python3.6设置虚拟环境venv,但是遇到了在各种其他帖子中已经提到的错误,例如这里。不幸的是,没有一个建议的解决方案有效。
我已经安装了必要的软件包。
$ sudo apt install python3.6-venv
...
$ dpkg -l | grep "python3.6-venv"
ii  python3.6-venv                              3.6.5-5~16.04.york0                          amd64        Interactive high-level object-oriented language (pyvenv binary, version 3.6)

我还安装了python3-venv(适用于Python 3.5)。现在尝试设置虚拟环境时,收到以下信息:
python3.6 -m venv test
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: ['/home/User/Python/test/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']

太好了,Debian开发人员真的需要尽快解决这个问题。 - Martijn Pieters
2个回答

5
在Debian / Ubuntu系统中,python -m venv已被禁用,因为virtualenv工具捆绑依赖项的方式违反了DFSG和Debian政策,即不包括源代码可在Debian内部构建的代码。
相反,在这些系统上,您应该始终使用pyvenv*命令;对于每个Python版本,都有一个特定的pyvenv-3.y版本脚本。在您的情况下,请使用。
pyvenv-3.6 test

然后以符合Debian政策的方式运行venv,以安装所需的软件包。

还可以查看使用pyvenv-3.6软件包安装的/usr/share/doc/pyenv-3.6/python3.6-venv文件。

如果仍然产生警告,请向Ubuntu软件包维护人员申报问题; 在Python 3.6中,弃用警告是新的,并且Ubuntu应该在其打包中禁用该警告,或者直接在python -m venv用例中修复ensurepip问题。如果pyvenv-3.6完全损坏(无法生成有效的虚拟环境),那么您一定要提交工单。请参阅python-3.6源软件包的错误跟踪器


1
当使用 pyvenv-3.6 时,我接收到以下警告(然后出现与上述相同的错误):警告:pyenv脚本已被弃用,建议改用 'python3.6 -m venv' - wasp256
@wasp256:这是Debian打包人员需要解决的问题;只要它能生成一个可用的virtualenv,你就没问题了。 - Martijn Pieters
问题是,它没有。 test/bin 中没有激活文件... - wasp256
@wasp256:试图查看Debian维护者对此有何看法。 - Martijn Pieters
@wasp256:Ubuntu针对Python 3.6软件包的错误跟踪器尚未提及此问题。 我看不到任何可以禁用警告的打包补丁,这使得您正在运行不同的 pyenv-3.6(而不是由Ubuntu打包),但您可能需要进行检查。 同时,建议向Ubuntu提交错误报告。 抱歉,我目前没有轻松访问虚拟机来测试此问题。 - Martijn Pieters
显示剩余2条评论

2

Ubuntu 18.10, Python 3.7.3

sudo apt install python3.7-venv
python -m venv ./venv

这对我有帮助。.venv现在包含许多文件,例如.venv/bin/activate。"最初的回答"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接