如何通过linux脚本激活python环境?
系统:如何通过linux脚本激活python环境?,python,linux,bash,virtualenv,centos7,Python,Linux,Bash,Virtualenv,Centos7,系统: 操作系统:CentOS Linux 7(核心)/CentOS Linux 7.7.1908版(核心) 内核:Linux 3.10.0-1062.4.1.el7.x86_64 来自提供商的服务器-我只是一个用户 您好,这是我的虚拟环境激活路径,目前正在运行django应用程序 /home/username/.local/env_myapp/bin/activate 如果需要,请运行命令 $source/home/username/.local/env_myapp/bin/activa
- 操作系统:CentOS Linux 7(核心)/CentOS Linux 7.7.1908版(核心)
- 内核:Linux 3.10.0-1062.4.1.el7.x86_64
- 来自提供商的服务器-我只是一个用户
您好,这是我的虚拟环境激活路径,目前正在运行django应用程序
/home/username/.local/env_myapp/bin/activate
如果需要,请运行命令
$source/home/username/.local/env_myapp/bin/activate
env$(my_env)
从终端开始
我想编写一个小脚本来自动启动env,而不必每次都将整个路径放在控制台中
所以我查看了激活
文件
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
好吧,你在我的剧本里写了这几行 我的环境
- 如果我运行
它只回显“check-activate”$my_env
- 如果我运行
它会运行回显“check-activate”,然后我的终端在VScode中消失$source my_env
问题:
那么,如何通过linux脚本正确激活python环境呢
亲爱的Stackoverflow,这个问题是关于如何通过脚本启动env,而不是关于退出,因为您将此标记为重复。此外,任何问题都可以通过我的问题下的评论来解决,但我不能“解决”它。因此,在下面写下答案-参见“更新”和答案的积分。update 感谢@Charles Duffy@alaniwi
source /home/username/.local/env_myapp/bin/activate
echo "check - activate env"
现在,脚本在终端中启动my env
(我知道如何通过问题评论来结束问题。所以我在这里写下了@Charles Duffy@alaniwi的答案)
那么,如何通过linux脚本正确激活python环境呢
阅读,然后(除了/sbin/init
之外,几乎所有Linux程序都是以execve
启动的)
因此,您可以在python脚本开始时使用,所以#/usr/bin/python
(并使其具有可执行性)
注意您的(请参阅和)
您的可能是(另请参见和),因此请阅读其文档(我个人更喜欢),或者至少可以添加一个shell函数,当您
cd
进入目录时,该函数会自动激活环境。(这假设您的pyenv位于Python项目目录中,而不是位于$HOME/pyenv
或类似目录中。)
#自动生成/显示Python虚拟环境:
函数cd(){
内置cd“$@”
设置\u python\u env
}
函数集_python_env(){
env=“.pyenv”
如果[-z“$VIRTUAL_ENV”]]
然后
#如果找到环境文件夹,则激活虚拟环境。仅此项
#当cd'ing进入顶级Python项目目录时有效,而不是
#直接进入子目录。这可能是常见的用法
#Python的大小写取决于目录层次结构。
如果[-d“$env”]]
然后
虚拟环境禁用提示=1
来源“$env/bin/activate”
fi
其他的
#检查当前文件夹是否属于当前虚拟环境。如果
#是,则不执行任何操作,否则将停用,并可能在以下情况下重新激活
#我们换了另一辆车。
parentdir=“$(dirname“$VIRTUAL_ENV”)”
如果[[“$PWD”/!=“$parentdir”/*]]
然后
使停止工作
设置\u python\u env
fi
fi
}
#立即激活环境;这样,当你
#打开终端,它会在Python项目目录中启动您。
设置\u python\u env
将上述内容复制到
~/.bashrc
或源代码中。如果不希望脚本在源代码
d时退出调用shell,请从脚本中删除退出
。从来没有理由将退出
或退出“$?”
作为脚本的最后一行--无论发生什么情况,当脚本到达结尾时总是这样做!这可以说是或的重复(请记住,
是源代码的同义词)。同时删除#代码>自上而下的一行-执行这样一个脚本(相对于源代码)没有什么用处,因为这样做不会影响父shell中的任何变量和任何#代码>行仅与执行脚本相关。获取激活脚本的目的是设置相关的环境变量。
source /home/username/.local/env_myapp/bin/activate
echo "check - activate env"