为 windows 从 gitbash 激活 pyvenv

Activating pyvenv from gitbash for windows

我在 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.ps1, 和 activate_this.py.

由于 gitbash 控制台无法使用 bat 或 powershell 脚本,我真的不想回到 windows cmd 提示符或 VM,有什么方法可以让 pyvenv 在我处于 windows 时为我创建一个 shell 脚本?

这是(目前)设计的。

在 Windows 中,仅安装了命令提示符 (.bat) 和 PowerShell (.ps1) 脚本。 The venv documentation 说 "The invocation of the script is platform-specific" – 请参阅该文档中的 table 列出命令以在不同平台上激活 venv。如果您查看 venv 源代码,您会发现它区分 Windows 和 POSIX 环境并相应地安装脚本。

但是,有一个 open bug that requests that scripts for other shells should also be installed. While waiting for that to possibly be resolved, there is a workaround: you could grab the bash (or other shell) script from your local machine or from the cPython hg repository (direct link to the file) 并将其放在 Windows-specific 旁边的 Scripts 文件夹中。您需要将 __VENV_DIR__ 更改为您的 venv 所在的目录,将 __VENV_BIN_NAME__ 更改为 "bin",并将 __VENV_PROMPT__ 更改为任何您想要的 bash 提示符venv 已激活(例如,“(env) ”)。设置权限,你应该可以开始了。

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

中的答案所述

以下代码解释了如何在 Git Bash 中名为项目的文件夹中设置和启动名为 env_project 的虚拟环境:

mkdir project
cd project/
virtualenv env_project
. activate env_project/

这对我有用:

. activate

这里的许多答案和评论中存在很多混乱。他们中的一些人说你可以简单地做 . activate,一些人 (@nme) "You'll get the "No such file or directory" 错误然后因为只有 activate.bat 和 Activate.ps1 两者都不起作用。"

问题确实存在,如 Python 3.5.x、3.6.x 中的 this issue. And that issue 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 后,问题消失了。)