我有以下Makefile:
PYTHON = python
.DEFAULT_GOAL = help
help:
@echo ------------------------------Makefile for Flask app------------------------------
@echo USAGE:
@echo make dependencies Install all project dependencies
@echo make docker Run Docker
@echo make env Set environment variables
@echo make run Run Flask app
@echo make test Run tests for app
@echo ----------------------------------------------------------------------------------
dependencies:
@pip install -r requirements.txt
@pip install -r dev-requirements.txt
docker:
docker compose up
env:
@set CS_HOST_PORT=5000
@set CS_HOST_IP=127.0.0.1
@set DATABASE_URL=postgresql://lv-python-mc:575@127.0.0.1:5482/Realty_DB
@set REDIS_IP=127.0.0.1
@set REDIS_PORT=6379
run:
${PYTHON} app.py test:
@${PYTHON} -m pytestset命令不能工作,环境变量也没有设置,可能有什么问题?
发布于 2021-04-14 20:43:54
当然,您可以设置环境变量,这些变量将对程序生成将调用的程序生效。但是make不能为调用make的shell设置环境变量。因此,如果makefile运行一个程序,那么您可以在makefile中设置一个环境变量,该环境变量在该程序中是可见的。
顺便说一句,这和make无关。这是操作系统的一个限制(或特性,取决于您的视角)。试试这个实验:
set FOO=bar
echo %FOO%。看到它打印bar.
cmd.exe
set FOO=nobar
echo %FOO%。确保它通过运行nobar.
echo %FOO%
输出exit
您将看到,与nobar不同,它仍然打印bar。这是因为操作系统不允许子程序修改父程序的环境。
所以,这件事无济于事。
https://stackoverflow.com/questions/67094865
复制相似问题