我需要向用户提供一个Python安装列表供您选择以执行某些操作。我想在Windows中我可以从注册表中获取此信息。不了解Linux和Mac。
任何提示?或者你甚至可能知道我可以找到Python代码的地方吗?
编辑:我找到所有口译人员并不重要。从标准位置寻找口译员实际上是好的。同意,这不是太困难,但我只是希望有人可能会有这样的代码,或者我在stdlib中忽略了一个函数。答案 0 :(得分:4)
我正在编写Python IDE,我想让用户选择解释器来执行程序。
然后就像其他IDE一样,只需提供一个对话框,用户可以在其中添加他们希望能够运行代码的解释器。
Eclipse以Java Runtimes为例进行此操作,完全可以这样做。特别是像Python这样的语言,其中虚拟环境是一个重要的东西,每个都有自己的exectutable。
您当然可以提出一次性检测来检查一些常见位置。对于Windows,这显然是注册表,因为py.exe
启动器需要在那里注册解释器 - 至少是系统范围的解释器。在Unix机器上,您可以检查常见的bin/
文件夹,最突出的是/usr/local/bin/
,这是Python安装自身的标准位置。您还可以检查PATH for Python可执行文件。但所有这些都应该仔细考虑,只提供初步设置。总有一些边缘情况,用户没有做“检测失败”的“标准事物”。例如,我的路径中没有我的Python解释器,我访问的Linux服务器已经将Python安装到我的主目录中的非标准文件夹中。最后,仅仅因为它看起来像Python并不意味着它是Python。
是的,你可以做一些猜测来提出一套初步的口译员,但实际上并没有花太多时间在上面。最后,无论如何你都无法完美地检测出一切。您将错过虚拟环境 - 这可能对用户在IDE中工作的项目非常重要。
因此,不要浪费时间检测错误,而是花更多时间创建手动对话来注册解释器。无论如何你都需要它,一个好的界面可以让它变得非常容易 - 即使是初学者 - 也可以使用它。
答案 1 :(得分:0)
不确定这是完全可能的,但这是一个肮脏的修复:
from subprocess import *
from time import sleep
for i in range(2, 4):
x = Popen('python' + str(i) + ' --version', shell=True, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
while x.poll() == None:
sleep(0.025)
print('Exit code of ' + str(i) + ' is:',x.poll())
x.stdout.close()
x.stdin.close()
退出代码将告诉您是否安装了Python2或Python3。 您可以为python版本2.4,2.4,3.1,3.2等添加第二个迭代器。或者只是将它们保存在列表中,无论您喜欢这个已经很脏的修复。