我正在寻找一种让多个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版本不拥有文件关联,则它在加载过程中的某个时刻会失败。
答案 0 :(得分:7)
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?