Python 3.x Python3虚拟环境正在执行Python2

Python 3.x Python3虚拟环境正在执行Python2,python-3.x,windows,Python 3.x,Windows,这个问题让我挠头已有一段时间了 我已经在Windows7和Windows10上两次遇到这个问题。由于它是一个封闭的网络,我对W7没有安全顾虑 我有一个现有的Python2.7安装-人口密集,有一些相当旧的库版本。 虽然我想为Python 2.7创建一个虚拟环境,但我不太愿意这样做,因为我需要使用的许多库版本都无法使用控制盘,而且一些较旧的库似乎也无法使用修订历史记录,因此,如果不尝试它们,我就无法判断更高版本的库是否向后兼容。由于Python2.7代码来自生产环境,因此我无法中断/替换它 Pyt

这个问题让我挠头已有一段时间了

我已经在Windows7和Windows10上两次遇到这个问题。由于它是一个封闭的网络,我对W7没有安全顾虑

我有一个现有的Python2.7安装-人口密集,有一些相当旧的库版本。 虽然我想为Python 2.7创建一个虚拟环境,但我不太愿意这样做,因为我需要使用的许多库版本都无法使用控制盘,而且一些较旧的库似乎也无法使用修订历史记录,因此,如果不尝试它们,我就无法判断更高版本的库是否向后兼容。由于Python2.7代码来自生产环境,因此我无法中断/替换它

Python2.7库都是从可执行安装程序安装的,因为其中许多都是在可执行安装程序之前安装的 pythonwheel标准的介绍。有些还需要使用旧版本的MSVC构建,这是不想尝试重建的另一个原因

尽管我最初的计划是创建一个单独的2.7虚拟环境,但让Python2.7保持原样安装并开始在虚拟环境中运行Python3会容易得多

include-system-site-packages = false
示例Python 3虚拟环境创建为“py37”

在我的虚拟环境中

include-system-site-packages = false
当我激活虚拟环境时,一切看起来都很好

Python-V
返回我所期望的3.7.3

我修改了脚本以输出python版本(因此我可以跟踪正在发生的事情)

然后我创建了两个简单的脚本,一个使用Python2打印格式,另一个使用Python3打印格式

即使虚拟环境中说的是Python3,python版本说的是3.7.3,Python3脚本也无法运行

Python2版本的print打印正确,因此很明显,尽管所有迹象都表明Python3正在运行,但它实际上是Python2

PythonPath在PC上为空/未定义,并且我的path变量指向我的python 3虚拟环境,而不是我的python 2安装


当version()或
Python-V
返回3.x时,我想到的所有搜索和示例都会停止,因此如果是重复问题,我无法找到原始请求。

解决方案很简单,但令人不快

为了使一切正常工作,我需要在每次运行时明确标识我想要运行的可执行文件,即在我的python3虚拟环境中python可执行文件的完整路径

include-system-site-packages = false
我最终创建了一个批处理文件包装器来实现这一点

e、 g.c:\apps\my\u venv3\scripts\python.exe%*

笨重,但它工作可靠,不会破坏任何现有环境