我正在寻找一种让多个Python程序在同一台Windows机器上共存的方法。
这里的问题是:假设程序A需要Python 2.5,B需要2.6,C需要3,每个需要自己的Qt,Wx或者其他模块或者任何其他的版本。
试图在同一台计算机上安装所有这些依赖关系将会破坏事情,例如,您可以并行安装不同版本的Python,但是其中只有一个可以具有.py文件关联,所以如果您将其提供给Python 2.5,那么B C不会工作等等
如果程序A可以在C:\ A下运行,那么它的理想状态就是如果程序A和它自己的Python解释器Qt / Wx / MySQL驱动程序/任何东西一起生活在C:\ A中,并且永远不会触及目录之外的任何东西,B和C
有没有办法做到这一点,而不是去完整的虚拟箱路线?
编辑:我试过batch file解决scheme,但它不起作用。 也就是说,它适用于简单的testing脚本,但是如果OpenRPG的所需版本的Python不拥有文件关联,则OpenRPG在其加载过程中的某个时刻会失败。
VirtualEnv 。
virtualenv是创建独立Python环境的工具。
正在解决的基本问题是依赖和版本之一,以及间接的权限。 想象一下,你有一个需要LibFoo版本1的应用程序,但是另一个应用程序需要版本2.你怎么能使用这两个应用程序? 如果你把所有的东西安装到/usr/lib/python2.4/site-packages(或者你的平台的标准位置),很容易导致无意中升级不应该升级的应用程序。
请参阅前面的答案。
你应该看的另一个工具是pip
,这对于在虚拟环境中安装特定版本的库非常有用。 例如,如果您需要在一个应用程序中运行python v 2.x中的库,并且在python v 2.x中运行同一个库中的1.1,则需要virtualenv加上在该环境中安装特定版本的方法。 Virtualenv +点是你最好的选择。
使用批处理文件来运行脚本,例如写在记事本中:
c:\ python26 \ python.exe C:\ Script_B \ B.py
并保存为runB.bat(或任何.bat)。 它将在解释器运行后在空白处指定c:\ python26 \ python.exe文件。
一个解决方案是制作一个批处理文件,为给定的应用程序调用正确的解释器。 这样,您可以将其他解释器安装在单独的文件夹中。
可能不完美,但它的作品。
你有没有考虑过把它们编译成EXE ? 一旦你这样做,你所要做的就是调用EXE,为此不需要安装python的机器。 所有需要的模块等都在编译时与发行版一起打包。
写一个python脚本,模仿unix shell处理scirpt的方式 – 看第一行,看它是否匹配#!(shell-name)。 然后让你的python脚本执行这个解释器并把它的其余参数给它。
然后,将.py与您的脚本相关联。
看起来最好的解决方案是在运行相应版本的Python之前设置文件关联的批处理文件,正如其中一个答案的注释中所述: 如何在同一个Windows XP盒子上运行Python 2.6和3.0?