我在Windows 11上的文件夹中有以下Makefile
。
VENV = test
PYTHON = $(VENV)/Scripts/python
PIP = $(VENV)/Scripts/pip
ACTIVATE = $(VENV)/Scripts/activate
run: $(ACTIVATE)
$(PYTHON) api/app.py
$(ACTIVATE): requirements.txt
py -m venv $(VENV)
$(PIP) install -r requirements.txt
deactivate: $(ACTIVATE)
$(VENV)/deactivate
.PHONY: clean
clean:
rmdir $(VENV) /s /q
rmdir api\__pycache__ /s /q
当我在PowerShell上执行make run
时,它成功地创建了虚拟环境,安装了需求并运行了app.py。但是,我已经注意到它没有在虚拟环境中运行。换句话说,它在运行之前没有激活环境。
我认为它没有在虚拟环境中运行的原因是,当我停止应用程序时,命令行不会像通常那样在左侧显示“(test)”。我还检查了一些已安装的软件包,以确保我没有在虚拟环境中。
如果我用手来做,我只会输入test\Scripts\activate
。在执行API/ www.example.com之前,我曾尝试在run命令中添加此命令app.py,但似乎也没有激活它。我还尝试了解决方案here,即。在执行应用程序之前添加test\Scripts\activate && exec bash
,但exec
未被识别为命令。用$(ACTIVATE)
替换test\Scripts\activate
也不起作用,因为它说test
不被识别为命令。
如何确保API/app.py在虚拟环境中运行?
1条答案
按热度按时间hmmo2u0o1#
我想我会这样做:
我不认为在 Makefile 中包含
activate
和deactivate
规则有什么意义,我甚至不认为它会起作用,所以我跳过了它们。您在问题中链接的trick是用于 Linux 上的 bash 的,我很确定它在Windows上不起作用,我想不出在Windows上起作用的解决方案。