尽管我做了各种尝试,但还是无法让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
有什么解决办法吗?为什么会这样呢?
在Mac
> pip3安装virtualenv
> python3 -m virtualenv [venv_name_you_want]
Q. virtualenv未找到
安装virtualenv后,pip3列表中存在virtualenv。但当使用“virtualenv [venv_name]”命令时,返回“virtualenv not found”。
答:因为virtualenv是作为一个模块安装在python3中的。没有像python3一样安装在“/usr/bin/..”路径下。因此在本例中,我们可以使用"python3 -m virtualenv [venv_name]"。
我们可以看到重试“pip3 install virtualenv”命令的位置。然后zsh或你的shell告诉我们这个信息。
默认为用户安装,因为正常的站点包是不可写的
需求已经满足:virtualenv in /Users/[your-usr-name-here]/Library/Python/3.8/lib/ Python/ site-packages (20.16.5)
需求已经满足:filelock<4,>=3.4.1 in /Users/[your-usr-name-here]/Library/Python/3.8/lib/ Python/ site-packages (from virtualenv)(3.8.0)…
解决问题
尝试使用——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找不到程序的原因。
解决方案
我们可以用很多方法来解决这个问题:
我们可以通过修改pip选项直接安装到特定目录(不推荐)。
在/usr/local/bin或类似目录下创建适当的符号链接。
附加/home/manos/.local/bin到PATH。
安装sudo直接安装到/usr/local/bin
最后两个选择可能是最明智的。最后一个解是最简单的,所以我只展示解3。
添加到~/.profile:
PATH="$PATH:$HOME/.local/bin"
登出并再次登入,它应该工作。
你有这样的错误:
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
接下来你只需要激活env:
virtualenv env
source env/bin/activate