bash无法识别通过pip-3.6安装的virtualenv问题求助
这个问题很常见——你用特定版本的pip安装工具后,它的可执行文件不在系统默认的PATH里,所以bash找不到。既然你不想改动默认pip(要保留Python2.7的pip),可以试试下面几个不影响全局配置的方法:
方法1:直接调用virtualenv的绝对路径
首先找到pip-3.6安装的virtualenv的具体位置:
pip-3.6 show virtualenv
输出里会有Location字段,比如类似这样:
Location: /opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
把这个路径里的lib/python3.6/site-packages替换成bin,就是virtualenv的可执行文件路径了,比如:
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenv
以后直接用这个绝对路径运行virtualenv即可,比如创建虚拟环境:
/opt/local/Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenv my_py36_env
方法2:临时添加路径到PATH(不影响全局)
如果觉得绝对路径太长,可以每次使用前临时把Python3.6的bin目录加到PATH最前面:
export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/3.6/bin:$PATH
之后你就能直接输入virtualenv调用这个版本了,不过这个改动只在当前终端会话有效,关闭终端后就会恢复原样,完全不会影响系统默认的pip。
方法3:设置别名(永久便捷调用)
如果经常用这个virtualenv,建议给它加个专属别名,不会和系统其他工具冲突。编辑你的bash配置文件(比如~/.bash_profile,如果用zsh就是~/.zshrc):
nano ~/.bash_profile
在文件末尾添加一行:
alias venv36='/opt/local/Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenv'
保存退出后,运行下面的命令让配置生效:
source ~/.bash_profile
以后你只要输入venv36就能调用这个Python3.6对应的virtualenv了,比如:
venv36 my_py36_env
这个方法既方便,又完全不会干扰系统默认的pip和Python2.7环境。
内容的提问来源于stack exchange,提问作者user264053

