从 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/
文件夹中创建了以下四个文件:activate
、activate.bat
、activate.ps1
和 activate_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/activate
或 source 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 中运行 iex
如何从 Git Bash 中将命令行参数传递给 Windows 应用程序?