从 Windows 的 git bash 激活 venv

Posted

技术标签:

【中文标题】从 Windows 的 git bash 激活 venv【英文标题】:Activating pyvenv from gitbash for windows 【发布时间】:2015-08-15 03:14:50 【问题描述】:

我在 Windows(7、64 位)上使用 gitbash。我尝试通过调用python -m venv venv使用python 3.4的内置venv模块创建一个venv,它创建成功,但生成的venv不包含bash激活脚本,只有.bat.ps1

python 2.6.6(版本 13.0.1)的 virtualenv 库在 venv/Scripts/ 文件夹中创建了以下四个文件:activateactivate.batactivate.ps1activate_this.py

由于 gitbash 控制台不能使用 bat 或 powershell 脚本,而且我真的不想回到 windows cmd 提示符或虚拟机,有什么方法可以让 pyvenv 创建一个 shell 脚本当我在 Windows 上时为我?

【问题讨论】:

我现在遇到了这个确切的问题。我什至升级到 Python 3.5 但这并没有解决它。你找到解决方案了吗? 我认为这是一个错误。我需要使用 Windows 7、8 进行项目开发,但始终首先安装 Git Bash Shell,这样我就可以避免笨拙的 DOS cmd shell 并获取我的 grep、查找命令、别名等。我将尝试生成一个 venv在 Linux 上并存档活动/停用以供以后粘贴到基于 Windows 的系统上。 【参考方案1】:

您不必担心虚拟环境 bash 脚本的存在,请转到 Git bash 并使用 . Scripts/activatesource Scripts/activate 如本主题回答中提到的 Can not activate a virtualenv in GIT bash mingw32 for Windows

【讨论】:

你会得到“没有这样的文件或目录”错误,因为只有 activate.bat 和 Activate.ps1 都不起作用。 @nme 在 git bash 中,请尝试转到路径 venvFolder/Scripts 并执行 . activate。这对我有用。(Windows10 64bit/Py3.5)【参考方案2】:

这里的许多答案和 cmets 存在很多混淆。他们中的一些人说你可以简单地做. activate,一些(@nme)said“你会得到“没有这样的文件或目录”错误,因为只有activate.bat和Activate.ps1两者都没有'没用。”

问题确实存在,如 this issue 中所述。在 Python 3.5.x 和 3.6.x 之后的那个问题 was eventually fixed at Jan 2017。因此,只有在 2017 年 1 月之后发布的 Python 3.5.3+、3.6.1+、3.7 才能解决此类问题。也可能是 Python 2.7.14+。这意味着,如果您仍在阅读此问答页面,您需要做的第一件事是检查您使用的 Python 版本,然后可能进行升级。 (例如,我在一个旧的 Python 3.6.0 环境中遇到了同样的问题,升级到 Python 3.7.2 后,问题就消失了。)

【讨论】:

谢谢!该死的,这快把我逼疯了。安装了未创建激活脚本的 3.6.0。 3.7.3 效果很好。【参考方案3】:

这是(目前)设计的。

在 Windows 中,仅安装命令提示符 (.bat) 和 PowerShell (.ps1) 脚本。 The venv documentation 说“脚本的调用是特定于平台的”——请参阅该文档中的表格,其中列出了在不同平台上激活 venv 的命令。如果您查看 venv 源代码,您会发现它区分了 Windows 和 POSIX 环境并相应地安装了脚本。

但是,有一个open bug 要求还应安装其他 shell 的脚本。在等待该问题可能得到解决时,有一个解决方法:您可以从本地计算机或cPython hg repository (direct link to the file) 获取 bash(或其他 shell)脚本,并将其放在脚本文件夹旁边特定于 Windows 的。您需要将__VENV_DIR__ 更改为您的venv 所在的目录,将__VENV_BIN_NAME__ 更改为“bin”,并将__VENV_PROMPT__ 更改为您希望激活venv 时的bash 提示符(例如,“(env) ”)。设置权限,你应该很高兴。

【讨论】:

activate 文件不起作用,因为它包含可能由 python 脚本填充的占位符【参考方案4】:

以下代码说明了如何在 Git Bash 中名为 project 的文件夹中设置和启动名为 env_project 的 virtualenv:

mkdir project
cd project/
virtualenv env_project
. activate env_project/

【讨论】:

这是一个新的/最近添加的功能吗?【参考方案5】:

这对我有用:

. activate

【讨论】:

以上是关于从 Windows 的 git bash 激活 venv的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Windows 命令行启动 Git Bash?

无法在 Windows 命令提示符或 git bash 中运行 iex

如何从 Git Bash 中将命令行参数传递给 Windows 应用程序?

从适用于 Windows 10 的 Git Bash 隐藏用户名和计算机名称

如何在 Windows 的 Git Bash 中设置别名?

如何使用 bash 命令在 Windows 10 中创建和激活虚拟环境