Virtualenv为不同的操作系统提供不同的版本

时间:2016-08-24 12:43:49

标签: python django virtualenv

我正在研究两个独立系统上的django项目,Debian Jessie和Mac El Capitan。该项目托管在github上,两个系统都将从中拉出或推送到。

然而,我注意到在我的Debian上,当我运行python --version时,它会给我Python 3.4.2,但在我的Mac上,尽管处于相同的虚拟环境中,它仍然给我Python 2.7.10。此外,当我在我的Debian上运行django-admin --version时,它会在我的Mac上1.10给我1.8.3

即使我从github重新克隆项目并运行命令,也会发生这种情况。

为什么虚拟环境不保留相同版本的python和django?

2 个答案:

答案 0 :(得分:0)

感谢@Oliver和@ Daniel的评论,这些评论引导我解答为什么它不起作用。

我使用python 3在我的Debian上启动了虚拟环境。virtualenv创建了虚拟环境,但它专门用于Debian。

当我将它用于mac时,因为它无法在虚拟环境中运行python可执行文件(因为它只与Debian兼容),因此,它使用了我的Mac系统python,即Python 2.7。 10。

总之,由于virtualenv在系统上使用python可执行文件,当python可执行文件在另一个系统上运行时,它将无法工作。

答案 1 :(得分:0)

现在您了解虚拟环境无法轻松地从一台机器传输到另一台机器。

是很常见的
pip freeze

命令并将其输出存储在名为requirements.txt的文件中。然后其他任何人都可以通过运行

在他们的机器上重建你的环境
pip install -r requirements.txt

当您创建新的虚拟环境时,您可以说明要使用哪个Python解释器与-p--python开关一起使用,后面应该跟有正确可执行文件的路径。

我个人建议不要以任何方式修改系统Python,因为系统维护例程通常依赖于它的完整性。安装Python 2和3的新副本相对简单,比如/usr/local/bin(Mac用户经常使用brew)并且拥有依赖于不同Python解释器的虚拟环境。