自动完成创建virtualenv和Django

问题描述


最近,我尝试使每天执行的一些任务自动化。

任务是:

  1. 转到特定文件
  2. 在该文件夹中创建虚拟环境
  3. 进入虚拟环境文件夹,然后激活虚拟环境
  4. 使用pip命令安装django

我正在python中使用子进程模块,现在我可以实现到第2步

这是代码

py_sample.py


import os
import subprocess

cwd = os.getcwd()

change_dir = os.chdir(cwd)

# to create a virtual env
virtualenv = input('Enter the name of virtual env : ')

#run the python virtualenv command
p1 = subprocess.run('python -m virtualenv {}'.format(virtualenv),shell=True)


virtualenv = os.path.join(os.getcwd(),virtualenv)

#go inside the virtual env folder
os.chdir(virtualenv)

#activate the virtual environment
p2 = subprocess.run(r'.\Scripts\activate.bat',shell=True)

cmd

C:\Users\swaru\Downloads>python py_sample.py
Enter the name of virtual env : django_env
created virtual environment Cpython3.8.2.final.0-32 in 1423ms
  creator Cpython3Windows(dest=C:\Users\swaru\Downloads\django_env,clear=False,global=False)
  seeder FromAppData(download=False,pip=bundle,setuptools=bundle,wheel=bundle,via=copy,app_data_dir=C:\Users\swaru\AppData\Local\pypa\virtualenv)
    added seed packages: pip==20.1.1,setuptools==49.2.1,wheel==0.34.2
  activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

C:\Users\swaru\Downloads>dir/b
django_env

您可以看到virtualenv已创建,但是我无法激活virtualenv。 我在这里缺少的任何人都可以指导我如何进行。

解决方法

必须在子过程命令中删除点(在\ Scripts之前):

安装

p2 = subprocess.run(r'.\Scripts\activate.bat',shell=True)

应该是

p2 = subprocess.run(r'\Scripts\activate.bat',shell=True)