Python 2.7 激活两个不同版本Python的virtualenv
我们有一个具有两个不同Python版本(2.7和3.5)的系统。 我们需要在Python3.5Python 2.7 激活两个不同版本Python的virtualenv,python-2.7,python-3.x,virtualenv,Python 2.7,Python 3.x,Virtualenv,我们有一个具有两个不同Python版本(2.7和3.5)的系统。 我们需要在Python3.5virtualenv上安装一些依赖项,但是Python2.7virtualenv已经为登录的用户激活,我们无法停用该virtualenv 我们想知道,是否有可能为同一用户同时激活不同Python版本的两个不同的virtualenv 我们尝试使用以下命令为Python2.7创建virtualenv: virtualenv -p /usr/bin/python2.7 env2.7 source env2.7
virtualenv
上安装一些依赖项,但是Python2.7virtualenv
已经为登录的用户激活,我们无法停用该virtualenv
我们想知道,是否有可能为同一用户同时激活不同Python版本的两个不同的virtualenv
我们尝试使用以下命令为Python2.7创建virtualenv:
virtualenv -p /usr/bin/python2.7 env2.7
source env2.7/bin/activate
激活后,我们使用以下命令为Python3创建了virtualenv:
virtualenv -p /usr/bin/python3 env3
source env3/bin/activate
上面的命令激活了
env3
,我们想知道,它是否会影响我们在Python2.7 virtualenv中运行的应用程序。由于Python2和Python3虚拟环境使用相同的shell变量来描述环境,您希望做的事情似乎很困难。但是,如果您只是希望能够在另一个虚拟环境处于活动状态时从一个虚拟环境运行程序,则可以通过以下方式实现。这假设您主要想要一个Python2虚拟环境,其中混合了一些Python3程序
如果查看入口点文件,您将看到它们已被赋予一个指向Python 3 VirtualEnvironment的Python解释器的命令,这足以确保它在正确的环境上下文中运行。因为Python 2和Python 3虚拟环境使用相同的shell变量来描述环境,你想做的事似乎很难。但是,如果您只是希望能够在另一个虚拟环境处于活动状态时从一个虚拟环境运行程序,则可以通过以下方式实现。这假设您主要想要一个Python2虚拟环境,其中混合了一些Python3程序
如果您查看入口点文件,您将看到它们已被提供一个指向Python 3 virtualenv的Python解释器的命令,这足以确保它在正确的环境上下文中运行。即使作为单个用户,您仍然可以运行shell的多个副本,每个程序都有自己的一组环境变量 因此,很容易同时运行这两个虚拟环境。只需将命令包装在
(
和)
中即可
试试这个:
virtualenv -p /usr/bin/python3.5 p35-venv
virtualenv -p /usr/bin/python2.7 p27-venv
echo '
(source p27-venv/bin/activate; python --version; sleep 5) &
(source p35-venv/bin/activate; python --version; sleep 5) &
' > test.sh
chmod a+x test.sh
./test.sh
这将启动新的bash进程(命令周围的括号将在新的bash中运行该命令),然后激活其中的第一个venv,输出活动的Python版本并休眠5秒钟。这将在后台运行,
test.sh
脚本将在第一个括号结束之前继续执行第二个命令。第二个括号将启动第二个bash进程,激活其中的第二个venv,输出Python版本,并休眠5秒钟。这两个新的bash进程都是在后台并行运行的,因此在它们完成sleep命令之前,您将看到它们的输出。即使是单个用户,您仍然可以运行shell的多个副本,每个副本都有自己的一组环境变量供每个程序使用
因此,很容易同时运行这两个虚拟环境。只需将命令包装在(
和)
中即可
试试这个:
virtualenv -p /usr/bin/python3.5 p35-venv
virtualenv -p /usr/bin/python2.7 p27-venv
echo '
(source p27-venv/bin/activate; python --version; sleep 5) &
(source p35-venv/bin/activate; python --version; sleep 5) &
' > test.sh
chmod a+x test.sh
./test.sh
这将启动新的bash进程(命令周围的括号将在新的bash中运行该命令),然后激活其中的第一个venv,输出活动的Python版本并休眠5秒钟。这将在后台运行,
test.sh
脚本将在第一个括号结束之前继续执行第二个命令。第二个括号将启动第二个bash进程,激活其中的第二个venv,输出Python版本,并休眠5秒钟。这两个新的bash进程都在后台并行运行,因此在它们完成sleep命令之前,您将看到它们的输出。如果您需要一个进程来运行特定的应用程序,而不是开发,您最好使用pipsi
在一个隔离的虚拟环境中安装程序。pipsi
是一个很好的工具,但我们不能使用其他工具,pipsi
使用python2.7
,但我想使用'python3'。虽然有解决方法。如果您需要一个用于运行特定应用程序的工具,而不是用于开发,您最好使用pipsi
在隔离的虚拟环境中安装程序。pipsi
是一个很好的工具,但我们不能使用其他工具,而pipsi
使用python2.7
,但我想用“python3”。虽然有解决办法,但在python程序中,通过控制台入口点,您的意思是确切的,是的。这是一种构建命令行处理器的简单方法。很好的一点是,它提供了一个可以复制到另一个虚拟环境中的人工制品,而不会丢失与它内置的VirtualEnvironment的连接。这是一种构建命令行pr的简单方法