Python 3虚拟环境正在执行python 2

时间:2020-01-21 22:00:04

标签: python-3.x windows

这个问题使我挠头了一段时间。

我现在在Windows 7和Windows 10上两次遇到了这个问题。由于它是一个封闭的网络,因此我对W7没有任何安全担忧。

我有一个现有的Python 2.7安装-人口稠密,带有一些相当老的库版本。 尽管我想为Python 2.7创建一个虚拟环境,但我不愿意这样做,因为我需要使用的许多库版本都无法使用转轮,而且某些较旧的库似乎没有可用的修订历史记录。也可以,因此如果不尝试使用它们,就无法确定更高版本的库是否向后兼容。由于Python 2.7代码来自生产环境,因此我无法破坏/替换它。

所有python 2.7库都是从可执行安装程序安装的,因为它们中有许多是早于 python wheel standard的介绍。有些还需要使用旧版本的MSVC进行构建,这是不希望重建的另一个原因。

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

示例Python 3虚拟环境创建为“ py37”。

在我的虚拟环境中。

include-system-site-packages = false

当我激活虚拟环境时,一切似乎都很好。

Python -V返回3.7.3,这是我所期望的

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

(py37) C:\my_folder\my_script.py

3.7.3 (v3.7.3:ef4c6ed12, Mar 25, 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]

Traceback (most recent call last):

file "my_script.py", line 24, in (module)

               from tk import ttk

ModuleNotFoundError: No module named 'tk'. 'tk' (python 3 lib) is not being found.

然后我创建了两个简单的脚本,一个使用python 2打印格式,另一个使用python 3。

即使虚拟环境显示python 3,而python版本显示3.7.3,python 3脚本也无法运行。

python 2版本的打印可以正确打印,因此即使所有迹象表明Python 3正在运行,也很明显它实际上是Python 2。

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

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

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法很简单,但令人不愉快。

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

我最终创建了一个批处理文件包装程序来简化此操作

例如c:\ apps \ my_venv3 \ scripts \ python.exe%*

笨拙,但是它可以可靠地运行,并且不会破坏任何现有环境。