bash:mkvirtualenv:找不到命令
Posted
技术标签:
【中文标题】bash:mkvirtualenv:找不到命令【英文标题】:bash: mkvirtualenv: command not found 【发布时间】:2012-12-01 02:01:09 【问题描述】:按照Doug Hellman's virtualenvwrapper
post 上的说明操作后,我仍然无法启动测试环境。
[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$
需要注意的是,我使用的WORKON_HOME
不在我的$HOME
中。我尝试查找/usr/local/bin/virtualenvwrapper.sh
,如virtualenvwrapper
installation docs 所示,但它不存在。
如果这很重要,我正在运行 CentOS 6 和 python 2.6.6。
# File: ~/.bash_profile
# ...
export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"
【问题讨论】:
【参考方案1】:使用打开你的 bashrc 文件
gedit ~/.bashrc
转到 bashrc 文件的底部 并复制这些行并粘贴它
哪个python3(给你python路径)
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
which virtualenv(给你 virtualenv 的位置)
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
which virtualenvwrapper.sh(返回virtualenvwrapper.sh的位置)
source /usr/local/bin/virtualenvwrapper.sh
请按照上面给出的相同顺序复制这些行
更多信息可以参考:https://www.freecodecamp.org/news/virtualenv-with-virtualenvwrapper-on-ubuntu-18-04/
您也可以使用:
创建虚拟环境:
python3 -m venv <virtual environment name>
virtualenv <virtual environment name>
激活虚拟环境
source <virtual environment name>/bin/activate
停用虚拟环境
deactivate
【讨论】:
【参考方案2】:使用此过程在 ubuntu 中创建虚拟环境
第 1 步
安装点子
sudo apt-get install python-pip
第 2 步
安装虚拟环境
sudo pip install virtualenv
第 3 步
创建一个目录来存储你的 virtualenvs(我使用 ~/.virtualenvs)
mkdir ~/.virtualenvs
或使用此命令在 env 中安装特定版本的 python
virtualenv -p /usr/bin/python3.6 venv
第 4 步
sudo pip install virtualenvwrapper
第 5 步
sudo nano ~/.bashrc
第 6 步
在 bashrc 文件末尾添加这两行代码
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
第 7 步
打开新终端(推荐)
第 8 步
创建一个新的虚拟环境
mkvirtualenv myawesomeproject
第 9 步
要加载或在 virtualenvs 之间切换,请使用 workon 命令:
workon myawesomeproject
第 10 步
要退出新的 virtualenv,请使用
deactivate
并确保使用 pip vs pip3
或按照以下步骤使用python3安装虚拟环境
安装环境
python3 -m venv my-project-env
并使用以下命令激活您的虚拟环境:
source my-project-env/bin/activate
或者如果你想要特定的 python 版本
virtualenv --python=python3.7.5 myenv
【讨论】:
【参考方案3】:执行此命令的先决条件 -
pip(Pip Installs Packages 的递归缩写)是一个包管理系统,用于安装和管理用Python。许多包都可以在 Python 包索引 (PyPI) 中找到。
sudo apt-get install python-pip
安装虚拟环境。用于创建虚拟环境,安装相互隔离的多个项目的包和依赖。
sudo pip install virtualenv
安装虚拟环境包装器About virtual env wrapper
sudo pip install virtualenvwrapper
安装先决条件后您需要启动虚拟环境包装器以创建虚拟环境。以下是步骤-
在路径变量中设置虚拟环境目录-
export WORKON_HOME=(directory you need to save envs)
source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME
正如@Mike 所说,source `which virtualenvwrapper.sh` 或 which virtualenvwrapper.sh
可以用来定位 virtualenvwrapper.sh 文件。
最好在~/.bashrc 中放上两行,以避免每次打开新shell 时都执行上述命令。这就是使用 mkvirtualenv
创建环境所需的全部内容注意事项 -
在 Ubuntu 下,您可能需要以 root 身份安装 virtualenv 和 virtualenvwrapper。只需在上面的命令前加上 sudo。 根据用于安装 virtualenv 的进程,virtualenvwrapper.sh 的路径可能会有所不同。通过运行 $ find /usr -name virtualenvwrapper.sh 找到适当的路径。相应地调整 .bash_profile 或 .bashrc 脚本中的行。【讨论】:
添加注释。在 ubuntu 18.04 上,我必须在安装后重新启动,然后它才能工作。 @screenmutt 感谢您的宝贵意见。当我使用 ubuntu 16.04 时,我可能错过了它。但是,我想知道您必须在哪一步之后重新启动?是在安装 pip 包之后还是在设置“虚拟环境目录”之后? 安装包装器之后。在那之后它起作用了。 @DanGrahn 你不需要重新启动,只需要重新运行.bashrc
- 在你当前的终端中明确地source ~/.bashrc
,或者打开一个新的终端窗口【参考方案4】:
为了在 Ubuntu 18.04.3 上成功安装 virtualenvwrapper
,您需要执行以下操作:
安装virtualenv
sudo apt install virtualenv
安装virtualenvwrapper
sudo pip install virtualenv
sudo pip install virtualenvwrapper
将以下内容添加到.bashrc
文件的末尾
export WORKON_HOME=~/virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
source ~/.local/bin/virtualenvwrapper.sh
执行.bashrc
文件
source ~/.bashrc
创建你的虚拟环境
mkvirtualenv your_virtualenv
【讨论】:
也适用于 ubuntu 20.04。一个小的更正:WORKON_HOME=~/.virtualenvs
是默认值。无需设置。 VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
也是默认值,但是在使用 python3 时这很有用。也应该使用export PATH="$HOME/.local/bin:$PATH"
作为 python 二进制路径【参考方案5】:
在 Windows 10 上,为了创建虚拟环境,我将“pip mkvirtualenv myproject”替换为“mkvirtualenv myproject”,效果很好。
【讨论】:
【参考方案6】:试试:
source `which virtualenvwrapper.sh`
反引号是命令替换 - 它们将程序打印出来的任何内容放入表达式中。在这种情况下,“which”检查 $PATH 以找到 virtualenvwrapper.sh 并输出它的路径。然后shell通过'source'读取脚本。
如果您希望每次重新启动 shell 时都发生这种情况,最好先获取“which”命令的输出,然后将“source”行放入 shell,如下所示:
echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile
^ 这可能会根据您的外壳略有不同。另外,请注意不要使用单个 >,因为这会截断您的 ~/.profile :-o
【讨论】:
虽然这可能是解决问题的宝贵提示,但答案确实需要比这更多的细节。请edit 解释这将如何解决问题。或者,考虑将其写为评论。 这解决了我的问题。但是有人会解释为什么以及如何? 反引号是命令替换——它们将程序打印出来的任何内容放入表达式中。在这种情况下,“which”检查 $PATH 以找到 virtualenvwrapper.sh 并输出它的路径。然后shell通过'source'读取脚本。【参考方案7】:由于我刚刚经历了一次拖累,我将尝试写下我两个小时前希望得到的答案。这适用于不只是想要复制和粘贴解决方案的人
第一:你想知道为什么复制和粘贴路径对某些人有效,而对其他人无效?**主要原因,解决方案不同是不同的 python 版本,2.x 或3.x。实际上有不同版本的 virtualenv 和 virtualenvwrapper 可以与 python 2 或 3 一起使用。如果你在 python 2 上安装,如下所示:
sudo pip install virutalenv
sudo pip install virtualenvwrapper
如果您打算使用 python 3,请安装相关的 python 3 版本
sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper
您已经成功安装了适用于您的 python 版本的软件包,并且一切就绪,对吧? 好吧,试试看。在终端中输入workon
。您的终端将无法找到该命令(workon
是 virtualenvwrapper 的命令)。当然不会。 Workon
是一个可执行文件,只有在您加载/获取文件 virtualenvwrapper.sh
后才能使用。但是官方installation guide 有没有介绍过这个,对吧?只需打开您的 .bash_profile 并插入以下内容,它在文档中说:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
尤其是命令source /usr/local/bin/virtualenvwrapper.sh
似乎很有帮助,因为该命令似乎加载/获取所需的文件virtualenvwrapper.sh
,其中包含您要使用的所有命令,例如workon
和mkvirtualenv
。 是的,不是。按照官方安装指南,您很可能会收到初始帖子中的错误:mkvirtualenv: command not found
。仍然没有找到命令,您仍然感到沮丧。那么这里有什么问题呢?问题是 virtualenvwrapper.sh 不是您现在正在寻找的。简短的提醒......你在看这里:
source /usr/local/bin/virtualenvwrapper.sh
但是有一种非常直接的方法可以找到所需的文件。只需输入
which virtualenvwrapper
到您的终端。这将在您的 PATH 中搜索该文件,因为它很可能位于系统 PATH 中包含的某个文件夹中。
如果您的系统非常奇特,所需的文件将隐藏在 PATH 文件夹之外。在这种情况下,您可以使用 shell 命令find / -name virtualenvwrapper.sh
找到virtalenvwrapper.sh
的路径
您的结果可能如下所示:/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh
恭喜。 You have found your missing file!
。现在您所要做的就是更改 .bash_profile 中的一个命令。只需更改:
source "/usr/local/bin/virtualenvwrapper.sh"
到:
"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"
恭喜。 Virtualenvwrapper 现在可以在您的系统上运行。 但您还可以做一件事来增强您的解决方案。如果您使用命令 which virtualenvwrapper.sh
找到了文件 virtualenvwrapper.sh
,您就知道它位于 PATH 的文件夹中。因此,如果您只写文件名,您的文件系统将假定该文件位于 PATH 文件夹中。所以你不必写出完整的路径。只需输入:
source "virtualenvwrapper.sh"
就是这样。你不再沮丧。你已经解决了你的问题。希望。
【讨论】:
我实际上只是复制并粘贴了您的解决方案【参考方案8】:通过将以下两行添加到 ~/.bash_profile(或 unix 中的 ~/.bashrc)文件中,解决了我在 Ubuntu 14.04 OS 中使用 python 2.7.6 的问题。
来源“/usr/local/bin/virtualenvwrapper.sh”
导出 WORKON_HOME="/opt/virtual_env/"
然后在终端上执行这两行。
【讨论】:
【参考方案9】:在 Windows 10 上使用 Git Bash 和在 Windows 上使用 Python36 我发现 virtualenvwrapper.sh 在稍微不同的地方,运行它解决了问题
source virtualenvwrapper.sh
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts
【讨论】:
使用 Windows 10、Git Bash 和 Python 3.8,对我来说是:/c/Users/[myUserName]/AppData/Roaming/Python/Python38/Scripts
@Manur 谢谢,它成功了。在运行 source virtualenwrapper.sh
时,我无法看到这条路径,而当我运行 source /c/Users/[myUserName]/AppData/Roaming/Python/Python38/Scripts
、mkvirtualenv <name>
时。【参考方案10】:
在 Windows 7 和 Git Bash 上,这对我有帮助:
-
创建一个 ~/.bashrc 文件(在您的用户主文件夹下)
添加行export WORKON_HOME=$HOME/.virtualenvs(如果该文件夹不存在,则必须创建该文件夹)
添加行 source "C:\Program Files
(x86)\Python36-32\Scripts\virtualenvwrapper.sh"(更改路径
你的 virtualenvwrapper.sh)
重新启动您的 git bash 和 mkvirtualenv 命令现在可以正常工作了。
【讨论】:
【参考方案11】:解决方案 1:
由于某种原因,virtualenvwrapper.sh
安装在 /usr/bin/virtualenvwrapper.sh
下,而不是 /usr/local/bin
下。
我的.bash_profile
中的以下作品...
source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"
如果没有采购 virtualenvwrapper_bashrc
,我的安装似乎可以正常工作
解决方案 2:
或者,如下所述,您可以利用virtualenvwrapper.sh
已经在您的shell 的PATH
中的机会,只需发出source `which virtualenvwrapper.sh`
【讨论】:
将WORKON_HOME
设置为 "~/.virtualenvs" (default value) 允许设置私有 virtualenvs
如果您使用发行版的包管理器安装,文件将位于 /usr/bin
而不是 /usr/local/bin
。通常,您不应假设找到其中一个;这就是我们拥有PATH
变量的原因之一。
这个答案基于使用 pip 安装 virtualenvwrapper,这是我更喜欢做的。
WORKON_HOME
是可选的,与解决方案无关。
我在/usr/share
Ubuntu 20.04 中找到了virtualenvwrapper/virtualenvwrapper.sh
【参考方案12】:
我在 OS X 10.9.1 和 python 2.7.5 上遇到了同样的问题。 WORKON_HOME
对我来说没有问题,但是在我运行 pip install virtualenvwrapper
之后,我必须手动将 source "/usr/local/bin/virtualenvwrapper.sh"
添加到 ~/.bash_profile
(或在 unix 中为 ~/.bashrc
)
【讨论】:
你在哪里手动添加源“/usr/local/bin/virtualenvwrapper.sh”? @Gregology 我将该行添加到~/.bash_profile
。请注意,当您第一次添加它时,您要么必须重新加载终端(运行 .bash_profile
),要么直接从命令行运行 source
命令。
如果您有一个带有文件名的标题并显示所有内容,这将非常有帮助,这样您就不必再追问“你把它放在哪里了?”
您是否使用.bash_profile
或.bashrc
并不是您使用哪个平台的直接结果,尽管在某些平台上可能缺少其中一个或另一个。有关它们的区别,请参见 Bash 手册页。一般来说,你应该只在你的.bash_profile
中真正需要这个,但是一些发行版使用的设置会使事情变得复杂。以上是关于bash:mkvirtualenv:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章