在Makefile中激活virtualenv
如何在Makefile中激活virtualenv 我试过:在Makefile中激活virtualenv,makefile,Makefile,如何在Makefile中激活virtualenv 我试过: venv: @virtualenv venv active: @source venv/bin/activate active: @. venv/bin/activate activate: ( \ source path/to/virtualenv/activate; \ pip install -r requirements.txt; \ ) 我也尝试过:
venv:
@virtualenv venv
active:
@source venv/bin/activate
active:
@. venv/bin/activate
activate:
( \
source path/to/virtualenv/activate; \
pip install -r requirements.txt; \
)
我也尝试过:
venv:
@virtualenv venv
active:
@source venv/bin/activate
active:
@. venv/bin/activate
activate:
( \
source path/to/virtualenv/activate; \
pip install -r requirements.txt; \
)
而且它不会激活virtualenv。以下是操作方法:
venv:
@virtualenv venv
active:
@source venv/bin/activate
active:
@. venv/bin/activate
activate:
( \
source path/to/virtualenv/activate; \
pip install -r requirements.txt; \
)
可以使用()在Makefile中执行shell命令
例如
echoTarget:
(echo "I'm an echo")
只需确保在shell命令的每一行之前都放置一个制表符。
i、 e.您将需要一个标签(echo“我是echo”)
以下是激活virtualenv的方法:
venv:
@virtualenv venv
active:
@source venv/bin/activate
active:
@. venv/bin/activate
activate:
( \
source path/to/virtualenv/activate; \
pip install -r requirements.txt; \
)
Makefiles无法直接激活环境。这就是我的工作原理:
activate:
bash -c "venv/bin/activate"
如果您遇到权限被拒绝错误,请使venv/bin/activate可执行:
chmod +x venv/bin/activate
UPD 3月14日至21日 virtualenv内部的
pip安装
还有一个变体:
# Makefile
all: install run
install: venv
: # Activate venv and install smthing inside
. venv/bin/activate && pip install -r requirements.txt
: # Other commands here
venv:
: # Create venv if it doesn't exist
: # test -d venv || virtualenv -p python3 --no-site-packages venv
test -d venv || python3 -m venv venv
run:
: # Run your app here, e.g
: # determine if we are in venv,
: # see https://stackoverflow.com/q/1871549
. venv/bin/activate && pip -V
: # Or see @wizurd's answer to exec multiple commands
. venv/bin/activate && (\
python3 -c 'import sys; print(sys.prefix)'; \
pip3 -V \
)
clean:
rm -rf venv
find -iname "*.pyc" -delete
因此,您可以使用不同的“标准”方式运行make
:
-目标为默认值make
all
-只需创建virtualenvmake venv
-生成venv并执行其他命令make install
-在venv内执行应用程序make run
-删除venv和python二进制文件makeclean
whichpy.py
):
导入系统
打印(系统前缀)
运行python虚拟环境(Make
recipes在sh
而不是bash
上运行,使用
激活虚拟环境是正确的语法):
上述两种配方都是可以接受的,我们可以自由使用反斜杠/换行符将一种配方分隔为多行。
/bin/sh:1:source:not found
这可能会安装给定环境的要求,但用户仍必须通过shell命令启动环境。这并不能解决问题make
需要以当前shell进程的形式运行(如果我理解正确的话)。请尝试使用。venvpath/bin/activate
代替源代码make
可能使用sh
而不是bash
source
是bash ism,而
是标准的POSIX方式,因此更具可移植性。这就是为什么它可能会有所不同。刚刚找到了一个SO答案,解释了如何使用bash
Makefile
s我想他想问的是,如果一个domake
我的shell将使用这个环境。您将在主机名的from中看到(venv)
。activate
应该是源代码,而不是执行代码。source-venv/bin/activate
如何代替您的bash-c..
行为您工作?通过此设置,如何在run
中激活venv
?@jonathan.scholbach,我更新了一个示例来回答您的问题