为什么不是';下面的Python脚本是否使用pip安装库?
我正试图用下面的脚本在Django中自动创建一个项目为什么不是';下面的Python脚本是否使用pip安装库?,python,django,Python,Django,我正试图用下面的脚本在Django中自动创建一个项目 import os, sys, pip, virtualenv directory = sys.argv[1] if not os.path.exists(directory): os.makedirs(directory) new_dir = os.path.join(os.getcwd(), directory) os.chdir(new_dir) if not os.path.exists('venv'): os.
import os, sys, pip, virtualenv
directory = sys.argv[1]
if not os.path.exists(directory):
os.makedirs(directory)
new_dir = os.path.join(os.getcwd(), directory)
os.chdir(new_dir)
if not os.path.exists('venv'):
os.makedirs('venv')
venv_dir = os.path.join(os.getcwd(), "venv")
virtualenv.create_environment(venv_dir)
activate_script = os.path.join(venv_dir, "bin", "activate_this.py")
execfile(activate_script, dict(__file__=activate_script))
pip.main(["install", "--prefix", venv_dir, "pytz"])
最后一行安装
django
,但不安装pytz
。它说已经安装了pytz
,但是当我激活venv
,从venv
中启动python并导入pytz时,它无法加载它。我做错了什么?pip.main没有在虚拟环境的上下文中执行,而是尝试在您的系统发行版中安装pytz。这就是为什么您会收到消息说它已经安装。可以使用subprocess.call指定要使用的pip
import os, sys, virtualenv, subprocess
directory = sys.argv[1]
if not os.path.exists(directory):
os.makedirs(directory)
new_dir = os.path.join(os.getcwd(), directory)
os.chdir(new_dir)
if not os.path.exists('venv'):
os.makedirs('venv')
venv_dir = os.path.join(os.getcwd(), "venv")
virtualenv.create_environment(venv_dir)
subprocess.call(['{}/bin/pip'.format(venv_dir), 'install', 'pytz'])