Python程序在Windows上共存

时间:2009-11-22 19:02:40

标签: 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. / p>

有没有办法实现这一目标,除了走完整个虚拟框路线?

编辑:我尝试了批处理文件解决方案,但它不起作用。也就是说,它适用于简单的测试脚本,例如如果OpenRPG所需的Python版本不拥有文件关联,则它在加载过程中的某个时刻会失败。

6 个答案:

答案 0 :(得分:7)

VirtualEnv

  

virtualenv是一个创造工具   孤立的Python环境。

     

正在解决的基本问题是   依赖项和版本之一,以及   间接权限。想象一下你   有一个需要版本的应用程序   一个LibFoo,但另一个应用程序   需要版本2.你如何使用   这两个应用程序?如果你   安装一切   /usr/lib/python2.4/site-packages(或   无论您的平台标准如何   位置是),它很容易结束   你无意中的情况   升级不应该的应用程序   升级。

参见上一个回答here

您应该看到的另一个工具是pip,这对于将特定版本的库安装到虚拟环境中非常有用。例如,如果你需要在python v 2.x中为一个应用程序运行v 1.0,在python v 2.x中运行相同库的1.1,那么你将需要virtualenv以及在该环境中安装特定版本的方法。 Virtualenv + pip是您的最佳选择。

答案 1 :(得分:2)

使用批处理文件来运行脚本,例如写入记事本:

c:\python26\python.exe C:\Script_B\B.py

并将其保存为runB.bat(或任何.bat)。它将在空格后指定的c:\ python26 \ python.exe文件中使用解释器运行。

答案 2 :(得分:1)

一种解决方案是制作一个批处理文件,为给定的应用程序调用正确的解释器。这样,您可以在单独的文件夹中安装其他解释器。

可能不完美但它有效。

答案 3 :(得分:1)

您考虑过compiling them to EXEs了吗?一旦你这样做,你所要做的就是调用EXE,机器不需要安装python。编译时,所有必需的模块等都与发行版一起打包。

答案 4 :(得分:0)

编写一个模仿unix shell处理scirpts的方式的python脚本 - 查看第一行并查看它是否与#!(shell-of-shell)匹配。然后让你的python脚本执行解释器并为其提供其余的参数。

然后,将.py与您的脚本相关联。

答案 5 :(得分:0)

看起来最好的解决方案是在运行相应版本的Python之前设置文件关联的批处理文件,如其中一个答案的评论中所述:how to run both python 2.6 and 3.0 on the same windows XP box?