在特定版本中测试Python脚本
我现在在我的Mac上安装了Python 2.6.2。我正在写一个脚本,这个脚本必须在Python 2.5.2上运行。所以我想写一个Python脚本,并且特别要在2.5.2上测试,而不是2.6.2。
我考虑过使用virtualenv,但它似乎没有解决我的问题。我运行了python virtualenv.py TEST
,这创建了一个TEST目录,但里面还是Python 2.6。有没有办法让virtualenv使用不同于我机器上默认安装的Python版本?还有没有其他方法可以在Python脚本的第一行使用#!
?我该怎么做呢?
5 个回答
你可以使用virtualenv来设置一个隔离的环境,这样可以使用不同版本的Python。就像Kable做的那样,先安装你想测试的2.5版本。然后创建你的虚拟环境:
virtualenv --p=python2.5 myapp
为了得到一个干净的环境,你可以在上面的命令中加上--no-site-packages这个选项。这在你想模拟一个全新、干净的设置时非常有用。接下来,激活你的虚拟环境:
source myapp/bin/activate
如果你检查一下Python的版本,现在应该能看到2.5.x版本:
python -V
现在你可以像往常一样在你的虚拟环境中安装你需要的模块:
easy_install ...
pip ...
要退出你的虚拟环境,可以使用:
deactivate
希望这些对你有帮助。
可以看看 tox,它就是为了这个目的而设计的。
下面是一个使用tox来在多个Python版本上运行 hello_world.py
脚本的例子:
安装tox
pip install tox
创建一个tox.ini配置文件
[tox]
envlist = py39, p310, p311
[testenv]
commands = python hello_world.py
- envlist选项用来指定要测试的Python版本
- commands选项用来指定在每个环境中要运行的命令
运行tox
tox
- 这会为Python 3.9、3.10和3.11创建独立的环境,并在每个环境中运行hello_world.py脚本。
你可以直接安装一个 Python 2.5.2 的版本。
我在我的 Lucid 系统上安装了三个不同版本的 Python,它们在 /bin/
目录下有不同的链接,这样就很方便调用特定的版本。
比如说:
python 指向 python3,python3 指向 python3.1
python2 指向 python2.7
还有 python2.5