【发布时间】:2015-12-07 18:51:06
【问题描述】:
我正在 Windows Server 2012 上运行多个 Python 安装。我可能会找到解决此问题的方法,但我很好奇发生了什么。我对从根本上改变安装保持警惕,以防我破坏了我可能不知道的其他人的 Python 计划任务。
(下面所有的代码框都是PowerShell)。
PS C:\> C:\Python34\Scripts\pip.exe list
jdcal (1.0)
pip (7.1.2)
setuptools (12.0.5)
virtualenv (13.1.2)
虽然此 Python 3.4 安装没有安装 Django,但它似乎从 Python 33x86 安装中获取了版本。这正常吗?
PS C:\> C:\Python34\python.exe -c "import django; print(django.get_version())"
1.6.5
PS C:\> C:\Python33x86\python.exe -c "import django; print(django.get_version())"
1.6.5
我创建了一个基于 Python 3.4 的 Python virtualenv 并在其中安装了 Django 1.8.4。执行“pip list”确认安装正确:-
PS C:\> D:\PyVirtualEnvs\example_py34\Scripts\activate.bat
PS C:\> D:\PyVirtualEnvs\example_py34\Scripts\pip.exe list | Select-String "Django "
Django (1.8.4)
但是,当我在该 virtualenv 中导入时,我得到了 Django 版本 1.6.5:-
PS C:\> D:\PyVirtualEnvs\example_py34\Scripts\python.exe -c "import django; print(django.get_version())"
1.6.5
这是 virtualenv 中的错误还是我遗漏了什么?
编辑:会不会和this question有关?
EDIT2:使用 pyvenv 时也会发生同样的事情,正如 ham-sandwich 所建议的那样。
【问题讨论】:
-
也许是一个愚蠢的问题,但你确定你已经激活了 venv 吗?
venv\Scripts\activate.bat -
是的,在上面第三个代码框的顶部。话虽如此,在验证它是否有效时没有视觉反馈。
-
是否有理由使用 virtualenv 而不是 pyvenv? docs.python.org/3/library/venv.html#module-venv
-
@ham-sandwich - 哦,这对我来说是个新闻。感谢您提供来自相关 PEP 的链接,听起来不错。但是,我上面的问题似乎比 virtualenvs 更深入;我仍然对 3.4 从 3.3 导入一些东西感到惊讶,并且想知道为什么。
-
我们的一个虚拟环境也是 2.7,我认为 pyenv 是 3.3+
标签: python powershell python-3.4 windows-server-2012 python-venv