gpt4 book ai didi

shell - 使用 shell 脚本激活 VirtualEnv 似乎不起作用

转载 作者:行者123 更新时间:2023-12-03 01:19:06 47 4
gpt4 key购买 nike

我尝试通过像下面这样的 shell 脚本激活 VirtualEnv,但它似乎不起作用,

#!/bin/sh
source ~/.virtualenvs/pinax-env/bin/activate

我收到以下错误

$ sh virtualenv_activate.sh 
virtualenv_activate.sh: 2: source: not found

但是如果我在终端上输入相同的命令,它似乎可以工作

$ source ~/.virtualenvs/pinax-env/bin/activate
(pinax-env)gautam@Aspirebuntu:$

所以我将shell脚本更改为

#!/bin/bash
source ~/.virtualenvs/pinax-env/bin/activate

按照建议和使用

$ bash virtualenv_activate.sh 
gautam@Aspirebuntu:$

运行脚本。

这不会引发错误,但也不会激活虚拟环境

那么关于如何解决这个问题有什么建议吗?

PS:我使用的是 Ubuntu 11.04

最佳答案

TLDR

必须使用 source 运行 .sh 脚本,而不是单独运行脚本

source your-script.sh

而不是 你的脚本.sh

详细信息

sh 与 bash 不同(尽管有些系统只是将 sh 链接到 bash,因此运行 sh 实际上运行的是 bash)。您可以将 sh 视为 bash 的淡化版本。 bash 有而 sh 没有的一件事是“source”命令。这就是您收到该错误的原因...源代码在您的 bash shell 中运行良好。但是,当您使用 sh 启动脚本时,您会在子进程的 shell 中运行该脚本。由于该脚本在 sh 中运行,因此找不到“源”。

解决方案是在 bash 中运行脚本。将第一行更改为...

#!/bin/bash

然后运行...

./virtualenv_activate.sh

...或者...

/bin/bash virtualenv_activate.sh

编辑:

如果您希望激活 virtualenv 来更改调用脚本的 shell,则需要使用“源”或“点运算符”。这确保脚本在当前 shell 中运行(并因此更改当前环境)...

source virtualenv_activate.sh

...或者...

. virtualenv_activate.sh

顺便说一句,这就是为什么 virtualenv 总是说你需要使用“source”来运行它的激活脚本。

关于shell - 使用 shell 脚本激活 VirtualEnv 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7369145/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com