我正在尝试将以下调用包装到一个脚本中,该脚本运行我的 Python 虚拟环境:
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ source /home/lucas/Dropbox/projects/competitive-programming/kaggle/venv/ipython-notebook/bin/activate
(ipython-notebook) [lucas@lucas-ThinkPad-W520]/home/lucas/bin$ deactivate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$
因此,我创建并运行了以下 bash 脚本:
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ cat venv_python3.sh
#!/bin/bash
# /usr/bin/env bash
echo "starting python3 venv"
source /home/lucas/Dropbox/projects/competitiveprogramming/kaggle/venv/ipythonnotebook/bin/activate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ venv_python3.sh
starting python3 venv
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$
如您所见,它执行调用echo
,但不启动我的虚拟环境。我错过了什么吗?
我已经查看了几个教程,但找不到缺少的内容。另外, my /home/lucas/bin/
,我的脚本的位置,位于 my $PATH
.
以下是该文件的权限:
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ ls -la
total 52
drwxr-xr-x 3 lucas lucas 4096 Jun 28 23:14 .
drwxr-xr-x 79 lucas lucas 4096 Jun 28 23:13 ..
-rwxrw-r-- 1 lucas lucas 164 Jun 28 23:13 venv_python3.sh
答案1
在脚本的顶部,activate
它说您必须获取它并且不能直接运行它。它的作用是更改bash
文件来源会话中的一些内容。
在您的情况下,这bash
是bash
通过运行venv_python3.sh
脚本调用的,不是您bash
正在交互式地输入。
您可以做的是创建一个 bash 函数(或别名)来为您进行采购,然后“采购”就会发生在您的交互式bash
.
不过我建议你看看虚拟环境包装器,这使得使用多个 virtualenv 变得更加容易,并且可能会解决您最初创建此脚本的“问题”。