与Python保持相同的Shell会话
我正在构建一个Python脚本,它将自动创建和安排我的新Django项目 我正在做的是与Python保持相同的Shell会话,python,mysql,django,orm,Python,Mysql,Django,Orm,我正在构建一个Python脚本,它将自动创建和安排我的新Django项目 我正在做的是 创建一个虚拟环境 使用source my_app/bin/activate pip安装toolname(多次) django startproject django startapp(多次) mkdir`dirs(制作模板dir、资产等) 打开/my\u app/my\u app/settings.py并编辑内部(基于脚本的输入) 打开/my\u app/my\u app/url.py并编辑(解锁)管理部分
- 创建一个虚拟环境
- 使用
source my_app/bin/activate
- pip安装
(多次)toolname
- django startproject
- django startapp(多次)
- mkdir
(制作模板dir、资产等)`dirs
- 打开
并编辑内部(基于脚本的输入)/my\u app/my\u app/settings.py
- 打开
并编辑(解锁)管理部分/my\u app/my\u app/url.py
- 为应用程序创建默认的
和admin.py
文件url.py
- 自动下载最新的JavaScript库、图像等
os.system('source my_app/bin/activate')
)保持它的会话,这样我就可以进入虚拟环境,然后可以从Python脚本中安装pip
现在当我这样做的时候
os.system('virtualenv ' + virtualenv_name)
os.system('source ' + ve_path + 'bin/activate')
os.system('which python')
它仍然告诉我它在/bin/python
中,但应该在/path/to/my_app/bin/python
中
有人知道是否有一种本地方式(这样我的队友就不必在主环境中安装超过virtualenv
)来保持shell会话的活动吗
我曾考虑将多个命令链接起来,并将它们转换为一个shell命令,但这有点难看。问题是,当您生成一个bash文件时,它实际上不会启动一个新的shell,而是在当前shell中执行,这就是它如何实际更改其中的环境变量。您的
os.system('source'+ve_path+'bin/activate')
确实启动了一个新的bash,当shell终止时,更改的环境变量消失
至少在我的系统上,virtualenv也会生成一个激活这个.py
文件。该文件的第二行解释了如何使用它。这是activate bash代码的python版本
试着把它放在代码中而不是源代码中:(哦,好吧,我把我的环境称为“A”,但我打赌你现在明白了)
activate_this = 'A/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))