我无法在Ubuntu上创建新的virtualenv?

16

我在Ubuntu终端中安装了virtualenv。我使用以下命令进行安装:

sudo apt install python3-virtualenv
pip install virtualenv

但是,当我尝试使用以下命令创建一个新的虚拟环境:

virtualenv -p python3 venv

我遇到了以下错误:

AttributeError: module 'virtualenv.create.via_global_ref.builtin.cpython.mac_os' has no attribute 'CPython2macOsArmFramework'

我该如何解决这个问题?

8个回答

32
我有过类似的经历。原因是我通过apt和pip3安装了两个virtualenv。这似乎是一个已知的bug(参见here)。
另一种可能导致你的系统出现第二个(或第三个)virtualenv实例的方式是通过sudo pip install。
所以,为了确保你只有一个版本,你可以将它们全部删除。
pip3 upip3 uninstall virtualenvninstall virtualenv
sudo pip3 uninstall virtualenv
sudo apt purge python3-virtualenv

...然后选择一个重新安装它(我的首选是用户空间 pip install virtualenv)。


2
我在使用Poetry更新依赖项时遇到了错误。卸载venv中存在的virtualenv包(可能是其他软件包的子依赖项)解决了我的问题。 - mattiatantardini
这应该是被接受的答案。它实际上解决了问题。 - Saul Aryeh Kohn

16

您不需要使用virtualenv。您可以使用以下内容:

python3 -m venv ./some_env

之前: sudo apt-get install python3.9-venv之后: python3.9 -m venv venv - Alexandr S.

4

首先,仅仅一个

sudo apt install python3-virtualenv
pip install virtualenv

应该这样做。如果apt安装成功,就不需要使用pip命令。

其次,您应该能够创建一个可以编写内容的地方:

edd@rob:/tmp$ mkdir venvdemo
edd@rob:/tmp$ cd venvdemo/
edd@rob:/tmp/venvdemo$ virtualenv -p python3 venv
created virtual environment CPython3.9.5.final.0-64 in 162ms
  creator CPython3Posix(dest=/tmp/venvdemo/venv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/edd/.local/share/virtualenv)
    added seed packages: pip==20.3.4, pkg_resources==0.0.0, setuptools==44.1.1, wheel==0.34.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
edd@rob:/tmp/venvdemo$ 
edd@rob:/tmp/venvdemo$ ls -a 
.  ..  venv
edd@rob:/tmp/venvdemo$ ls -a venv/
.  ..  bin  .gitignore  lib  pyvenv.cfg
edd@rob:/tmp/venvdemo$ 

我在Ubuntu机器上完成了这个操作。

第三,依然有些非常不对,因为使用Ubuntu时不应该出现CPython2macOsArmFramework的错误信息。


2

对于最新的Ubuntu 22.04 Jammy,它适用于我:

首先安装pip:

sudo apt install python3-pip
sudo apt-get update

现在尝试安装虚拟环境:

sudo apt install python3.10-venv

创建虚拟环境:
python3 -m venv venv

2

现在不再需要使用 virtualenv。自Python3.3版本之后,您可以使用venv来创建虚拟环境。

python3 -m venv ./desired_name_of_env

1

在创建环境时,我遇到了相同的错误。

然而,我是通过我的WSL Ubuntu 20.04 LST来创建它的。

经过一些研究,在这篇文章的评论部分,有人建议在创建环境时添加sudo可以解决问题,这对我有效。

sudo virtualenv venv

现在,我不确定为什么使用sudo会起作用。我的猜测是没有超级用户权限下,WSL无法为本地计算机创建文件夹。


0

我曾经遇到过类似的问题,可以尝试使用:

sudo virtualenv venv

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

0

我知道现在很多人使用venv,但是只使用mkvirtualenv创建新的虚拟环境并使用workon获取可用环境列表并在其上工作的功能使我坚持使用virtualenv本身。

在我的Ubuntu 20.04 LTS中适用的方法:

sudo apt install virtualenv

不要使用pip install virtualenv,因为它不会自动设置路径。

创建一个目录来存储所有虚拟环境:

mkdir .virtualenv

使用以下命令安装virtualenvwrapper:

pip3 install virtualenvwrapper

通过添加以下命令修改您的.bashrc文件:

export WORKON_HOME=$HOME/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

source ~/.local/bin/virtualenvwrapper.sh

在终端中使用. ~/.bashrc命令来源化.bashrc文件。

重新启动终端并使用以下命令创建虚拟环境:

mkvirtualenv name-of-env

创建虚拟环境后,该环境将被激活并显示为 (name-of-environment)user@sys-name:~$

要停用环境,请在终端中使用: deactivate

现在,您可以使用workon访问环境列表,并通过简单地使用以下命令来激活它们: workon name-of-environment


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