我正在尝试创建一个虚拟环境,启动它,然后在虚拟环境中执行每个命令。
1. os.system("curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py")
2. os.system("python3 get-pip.py")
3. os.system("mkdir Apps")
4. os.system("pip3 install virtualenv")
5. os.system("virtualenv virt")
6. os.system("source virt/bin/activate")
7. os.system("pip3 install flask")这是我现在拥有的代码,我试图在联机(5)上创建虚拟环境,然后尝试在联机(6)上激活它,然后在虚拟环境上执行第7行(安装烧瓶)。
我也尝试过os.system('. virt/bin/activate'),但是每次我运行python文件时,它都会执行所有操作,除了启动虚拟环境之外。
我正在Mac的终端上运行这个。
发布于 2020-02-05 09:06:57
很可能,虚拟环境仅在os.system()调用期间处于活动状态。在许多情况下,不需要激活虚拟环境,只需找到它的bin目录并运行在其中找到的二进制文件。
这类东西:
os.system('/path/to/venv/bin/python -m pip install flask')os.system('/path/to/venv/bin/pip install flask')对于另一种方法:
#!/usr/bin/env python3
import pathlib
import subprocess
import venv
class _EnvBuilder(venv.EnvBuilder):
def __init__(self, *args, **kwargs):
self.context = None
super().__init__(*args, **kwargs)
def post_setup(self, context):
self.context = context
def _venv_create(venv_path):
venv_builder = _EnvBuilder(with_pip=True)
venv_builder.create(venv_path)
return venv_builder.context
def _run_python_in_venv(venv_context, command):
command = [venv_context.env_exe] + command
print(command)
return subprocess.check_call(command)
def _run_bin_in_venv(venv_context, command):
command[0] = str(pathlib.Path(venv_context.bin_path).joinpath(command[0]))
print(command)
return subprocess.check_call(command)
def _main():
venv_path = pathlib.Path.cwd().joinpath('virt')
venv_context = _venv_create(venv_path)
_run_python_in_venv(venv_context, ['-m', 'pip', 'install', '-U', 'pip'])
_run_bin_in_venv(venv_context, ['pip', 'install', 'attrs'])
if __name__ == '__main__':
_main()https://stackoverflow.com/questions/60066755
复制相似问题