Python程序在Windows上共存
我想找到一种方法,让多个Python程序可以在同一台Windows电脑上共存。
问题是:假设程序A需要Python 2.5,程序B需要2.6,程序C需要3,而每个程序还需要自己版本的Qt、Wx或者其他模块。
如果试图在同一台机器上安装所有这些依赖,就会出现问题。例如,你可以把不同版本的Python同时安装,但只能有一个版本能处理.py文件的关联。如果把这个关联给了Python 2.5,那么程序B和C就无法正常工作了,等等。
理想的情况是,程序A可以放在C:\A目录下,带着自己的Python解释器、Qt/Wx/MySQL驱动等,完全不影响其他程序,程序B和C也是如此。
有没有什么办法可以实现这个目标,除了使用虚拟机之外?
补充:我试过用批处理文件的方法,但不太管用。也就是说,它在简单的测试脚本上可以运行,但比如OpenRPG在加载过程中会出错,如果它需要的Python版本没有文件关联的话。
6 个回答
使用批处理文件来运行脚本,比如你可以在记事本中写:
c:\python26\python.exe C:\Script_B\B.py
然后把它保存为 runB.bat(或者其他以 .bat 结尾的名字)。这个文件会用指定的解释器来运行,解释器的路径是在空格后面的 c:\python26\python.exe。
virtualenv 是一个用来创建独立 Python 环境的工具。
它主要解决的问题是依赖关系和版本问题,还有间接的权限问题。想象一下,你有一个应用需要 LibFoo 的 1 版本,但另一个应用需要 2 版本。那你该怎么同时使用这两个应用呢?如果你把所有东西都安装到 /usr/lib/python2.4/site-packages(或者你平台的标准位置),就很容易出现意外升级了不该升级的应用的情况。
可以查看之前的回答 这里。
另一个你应该了解的工具是 pip
,它非常适合在虚拟环境中安装特定版本的库。例如,如果你需要在 Python 2.x 中为一个应用运行库的 1.0 版本,而另一个应用需要同样库的 1.1 版本,你就需要使用 virtualenv 加上安装特定版本的工具。Virtualenv 和 pip 是你最好的选择。
看起来最好的解决办法是写一个批处理文件,这个文件在运行合适版本的Python之前,先设置好文件关联。这个方法在这里的一个回答的评论中提到过:如何在同一台Windows XP电脑上同时运行Python 2.6和3.0?