虚拟环境命令未找到

351

尽管做了各种尝试,但我无法让virtualenv正常工作。我使用以下方法在MAC OS X上安装了virtualenv

pip install virtualenv

我也将PATH添加到了我的.bash_profile中。但每次我尝试运行virtualenv命令时,它都会返回:

-bash: virtualenv: command not found

每次我运行 pip install virtualenv,它都会返回:

Requirement already satisfied (use --upgrade to upgrade): virtualenv in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

我明白在Mac中,virtualenv 应该被正确地安装。

/usr/local/bin

virtualenv 已安装在 /usr/local/bin,但每当我尝试运行 virtualenv 命令时,会提示找不到该命令。我还尝试在目录 /usr/local/bin 中运行 virtualenv 命令,但结果相同:

-bash: virtualenv: command not found

这些是我添加到我的.bash_profile文件中的路径。

export PATH=$PATH:/usr/local/bin
export PATH=$PATH:/usr/local/bin/python
export PATH=$PATH:/Library/Framework/Python.framework/Version/2.7/lib/site-packages

有没有解决这个问题的方法?为什么会出现这种情况?


1
尝试在/usr/local/bin中为virtualenv可执行文件添加一个符号链接。 - Justin Fay
我应该在哪里创建符号链接?尽管我已经尝试在想要使用virtualenv的目录中添加符号链接,但它仍然无法正常工作。@justinfay - Arial
2
从上面的路径看,可能是将命令中的最后一个路径替换为实际 virtualenv 可执行文件的路径:$ ln -s /usr/bin/virtualenv /Library/Framework/Python.framework/Version/2.7/lib/site-packages/virtualenv/virtualenv.py - Justin Fay
4
对我来说有效的方法是添加符号链接 ln -s /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/virtualenv.py /usr/local/bin/virtualenv - Aliza
如果您尝试 pip install virtualenv --user 呢?同时检查 /usr/local/bin/ 的权限(您写道它确实安装在 /usr/local/bin/,所以如果找不到它,看起来更像是权限问题)。 - JulienD
显示剩余2条评论
32个回答

430

如果您是使用安装程序进行安装的

pip install virtualenv

你需要奔跑

sudo /usr/bin/easy_install virtualenv

这将把它放在/usr/local/bin/目录中。

默认情况下,上述目录应该在您的PATH中;否则,请相应地编辑您的.zshrc(或.bashrc)。


在 AWS EC2 实例上使用 Amazon Linux,如果您正在尝试使用 Let's Encrypt 的 certbot,可以尝试这个解决方案。这是唯一一个解决我的 virtualenv 问题的建议。 - emrahgunduz
49
输出内容为 sudo: /usr/bin/easy_install: command not found。该错误提示表明在使用 sudo 命令时,找不到 easy_install 命令的位置。 - Ced
6
谢谢您的请求 - 但我希望我知道这里使用了什么巫术 - "easy_install" 相比普通的 pip 做了什么?也就是说,为什么这样做可以奏效? - Thomas Kimber
17
这个命令可以在MacOs上创建Python虚拟环境:python -m venv 虚拟环境名称 - Peter Wauyo
1
它一直试图使用2.7版本。 - Nathan McKaskle
显示剩余2条评论

305

我也碰到了同样的问题,以下是我解决的方法:

  1. 这个问题出现在我使用pip作为普通用户(而不是root)安装virtualenv时。pip会将包安装在目录~/.local/lib/pythonX.X/site-packages中。
  2. 如果我以root或管理员权限(sudo)运行pip,则它会将包安装在/usr/lib/pythonX.X/dist-packages路径下。这个路径可能对你来说不同。
  3. 只有在第二种情况下才能识别virtualenv命令。
  4. 为了解决这个问题,可以执行pip uninstall virtualenv,然后使用sudo pip install virtualenv(或以root身份安装)重新安装virtualenv。

13
我按照你的解决方案操作后,收到了这个信息:"...如果使用sudo执行pip命令,你可能需要加上sudo的-H选项"。最终在我的Mac OS X系统上,sudo -H pip install virtualenv 命令解决了我的问题,谢谢你。 - smudo78
2
如果您的计算机上没有根目录怎么办? - user5359531
第四步就是我一直在寻找的!我一直不知道如何从~/.local目录中获取文件。 - landesko
按照上述说明操作,对我很有效。@vettipayyan毕竟不是那么无聊。 - ultrasounder
我使用的是Windows,但问题是一样的。也就是说,我是从普通命令提示符安装的软件包。因此,我卸载了它,然后再次从提升的提示符安装,这样virtualenv就被识别了。 - jshd
显示剩余4条评论

85

最简单的答案。只需:

pip uninstall virtualenv

然后:

pip install virtualenv

或者你可能是使用sudo安装了virtualenv,如果是这样的话:

pip install --user virtualenv

9
哇!这对我来说起了奇效。顺便说一下,我正在使用 pyenv - race_carr
3
这是在 Mac OS X 上使用 brew 的正确方法。 - TCSGrad
这个问题困扰了我好几周,影响了我在 Python 项目上的有限工作时间,而这是在 Mac 上为我工作的唯一解决方案。谢谢! - HellaDev
谢谢,卸载之前的版本后使用Sudo对我有用:pip uninstall virtualenv sudo pip install virtualenv - KIRAN KUMAR B
谢谢!在搭载 M1 芯片的 Mac 上完美运行! - Karthik Vasishta Ramesh

80
python3 -m virtualenv virtualenv_name   
或者
python -m virtualenv virtualenv_name

在没有第三方库的情况下,以下命令在我的电脑上可以正常运行:python -m virtualenv <name>。 - ofer.sheffer
使用Python解决路径问题始终是一个好方法。 - DariusL
2
在Windows 10中,64位系统下,以下命令对我有效: "python -m virtualenv myvirtualenv" - Nube Colectiva

50

我遇到过同样的问题。我使用以下步骤使其正常工作

sudo pip uninstall virtualenv

sudo -H pip install virtualenv

就是这样。它开始工作了。

sudo -H 的使用----> sudo -H:HOME 变量设置为目标用户的主目录。


2
它对我来说解决了完全相同的问题...为什么没有被选中作为解决方案呢? - manuele
也曾在Ubuntu上工作过。我在Digital Ocean上设置时遇到了问题,这应该是解决方案。 - Jose Andres Montes Espinoza

47

在Ubuntu 18.04 LTS上,我也遇到了同样的错误。 以下命令有效:

sudo apt-get install python-virtualenv

1
brew install python-virtualenv 不存在。 - Leonard
非常好用,在我的18.04上运行良好,谢谢。 - Nischaya Sharma
1
被投票降级以推广apt作为apt-get的继任者。 - greybeard

43

我在 Mac OS X El Capitan 上遇到了同样的问题。

当我像这样安装 virtualenv,即 sudo pip3 install virtualenv 后,我在命令行下没有 virtualenv

我按照以下步骤解决了这个问题:

  1. 卸载之前的安装。
  2. 在安装 virtualenv 之前切换到超级用户账户,通过调用 sudo su
  3. 通过调用 pip3 install virtualenv 安装 virtualenv
  4. 最后,您应该能够从普通用户和超级用户账户访问 virtualenv

适用于 macOS Big Sur 11.6。 - Dushan Wijesinghe
适用于 macOS Ventura 13.3。 - Habib Ullah Bahar

22

找出问题所在

尝试使用--verbose标志安装

pip install virtualenv --verbose

输出的结果将类似于这样

  ..
  Using cached virtualenv-15.1.0-py2.py3-none-any.whl
  Downloading from URL https://pypi.python.org/packages/6f/86/3dc328ee7b1a6419ebfac7896d882fba83c48e3561d22ddddf38294d3e83/virtualenv-15.1.0-py2.py3-none-any.whl#md5=aa7e5b86cc8cdb99794c4b99e8d670f3 (from https://pypi.python.org/simple/virtualenv/)
Installing collected packages: virtualenv

  changing mode of /home/manos/.local/bin/virtualenv to 755
Successfully installed virtualenv-15.1.0
Cleaning up...

从输出结果可以看出,它安装在/home/manos/.local/bin/virtualenv,因此让我们确保PATH包括该路径。

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

在我的情况下,我们可以清楚地看到/home/manos/.local/bin完全丢失了,这就是为什么shell找不到该程序的原因。

解决方案

我们可以用许多方法来解决这个问题:

  1. 通过调整pip选项直接安装到特定目录(不推荐)。
  2. /usr/local/bin或类似位置创建适当的符号链接。
  3. /home/manos/.local/bin添加到PATH中。
  4. 以sudo身份安装,直接安装到/usr/local/bin

最后两个选项可能是最明智的。最后一个解决方案最简单,因此我将展示解决方案3。

将以下内容添加到~/.profile中:

PATH="$PATH:$HOME/.local/bin"

登出并重新登录,这样应该就可以了。


1
这个完美运行。应该被接受的答案,并且对于详细的解释加+1。 - David

20

我找到了这个解决方案,对我非常有效。

sudo -H pip install virtualenv

-H选项将其设置为主目录,这似乎是大多数人遇到的问题。


16

你遇到了这个错误:

zsh: command not found: virtualenv

很可能您之前在安装virtualenv时没有先输入sudo。

如果您尝试将其添加到/usr/local/bin,则可能会出现语法错误,因为包未正确安装/复制:

SyntaxError: invalid syntax

  File "build/bdist.macosx-12.0-x86_64/egg/platformdirs/__main__.py", line 16
    def main() -> None:
               ^

如果您尝试在没有sudo权限的情况下通过pip安装virtualenv,则需要首先卸载它:

pip3 uninstall virtualenv

然后使用sudo安装它:

sudo pip3 install virtualenv

接下来,您只需要激活环境:

virtualenv env 
source env/bin/activate 

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