Lea*_*ver 12 python version nltk python-3.x
我面临着一种独特的情况,有点微不足道但很痛苦.
我需要使用Python 2.6.6,因为NLTK没有移植到Python 3(这是我可以收集的).
在一个不同的代码(它同时工作)中,有一个集合计数器函数,它只在Python 3中可用,但在Python 2.6.6中不可用.
所以,每次我在两个代码之间切换时,我都需要安装和卸载版本.那是浪费时间.
有关如何指定我想使用哪个版本的任何建议?
Use*_*ser 17
安装Python 3
Python 3.3及更高版本将一个py.exe放入windows文件夹.[ link ]此可执行文件用于确定文件第一行的python版本:
#!/usr/bin/python2.7
Run Code Online (Sandbox Code Playgroud)
将使用Python 2.7执行.安装其他Python版本后,必须安装Python 3版本.
其他资源:https://docs.python.org/3/using/windows.html#customization
pywin https://pypi.python.org/pypi/pywin
旧解决方案
我猜你用的是windows.我用黑客解决了这个问题:
每次我在Windows上启动python时都会使用python.bat.这将启动一个python.py,它在#之后分析文件的头部!对于python版本.
要启动example.py,我键入控制台
python example.py
Run Code Online (Sandbox Code Playgroud)
但也可以每次点击开始.
这是我的python文件C:\ bin\python.py
#!/usr/bin/env python2
import sys
import os
args = sys.argv
if len(args) <= 1:
# no arguments
# start python console
i = os.system('C:\bin\python2.bat' + " ".join(args[1:]))
if type(i) != int:
i = 0
exit(i)
def analyse(filename, default = ''):
'''=> '2', '3', default '''
try:
f = open(filename)
except IOError:
# file not found
return default
firstLine = f.readline()
if firstLine.startswith('#!'):
if 'python2' in firstLine:
return '2'
if 'python3' in firstLine:
return '3'
i = firstLine.find(' ')
if i != -1:
# analyse from end of path on
in2 = '2' in firstLine[i:]
in3 = '3' in firstLine[i:]
if in2 and not in3:
return '2'
if in3 and not in2:
return '3'
else:
# analyse path
in2 = '2' in firstLine
in3 = '3' in firstLine
if in2 and not in3:
return '2'
if in3 and not in2:
return '3'
return default
no = analyse(args[1], default = '2')
if args[1][-1:] == 'w':
# python win
cmd = 'C:\bin\pythonw%s.bat'
else:
cmd = 'C:\bin\python%s.bat'
i = os.system(cmd % no + ' ' + " ".join(args[1:]))
if type(i) != int:
i = 0
exit(i)
Run Code Online (Sandbox Code Playgroud)
这是C:\ bin\python.bat文件
@echo off
C:\bin\python2 C:\bin\python.py %*
rem this may also work:
rem C:\bin\python.py %*
Run Code Online (Sandbox Code Playgroud)
在你开始的每个文件中,你必须放置任何一个
#!/bin/env/python3
Run Code Online (Sandbox Code Playgroud)
要么
#!/bin/env/python2
Run Code Online (Sandbox Code Playgroud)
默认是python2
然后我将这些文件添加到该文件夹:
C:\ BIN\python2.bat
@echo off
C:\python27\python.exe %*
Run Code Online (Sandbox Code Playgroud)
C:\ BIN\pythonw2.bat
@echo off
C:\python27\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)
C:\ python3.bat
@echo off
C:\python32\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)
C:\ BIN\pythonw3.bat
@echo off
C:\python32\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)
如果你使用python26而不是python27那么你需要改变
C:\python27
Run Code Online (Sandbox Code Playgroud)
至
C:\python26
Run Code Online (Sandbox Code Playgroud)
等等.与不使用python 32的python相同.
你也可能要开始每Python文件克利克
然后这样做:
点击.py文件 - >打开 - >选择C:\ bin\python.bat
如果您遇到问题,请与我联系或发表评论.
您只需在单独的目录中安装多个版本,然后使用您要使用的Python版本运行python程序.像这样:
C:\Python26\Python.exe thescript.py
Run Code Online (Sandbox Code Playgroud)
或类似的.
virtualenv所做的是它为您提供了许多相同python版本的 "虚拟"安装.这是一个完全不同的问题,因此它不会以任何方式帮助你.
小智 6
对于那些使用Windows的人,如果你不反对使用PowerShell,你可以单独安装python 2和3,如其他答案所述.然后你可以这样做:
Set-Alias python27 [some path]\python27\python.exe
Set-Alias python33 [some path]\python33\python.exe
Run Code Online (Sandbox Code Playgroud)
为运行每个版本创建别名.
保持别名在此链接中描述:https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_aliases#saving-aliases
为了成功加载您创建该链接的配置文件,您可能需要更改执行策略.
Set-ExecutionPolicy RemoteSigned
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩,但如果你想了解更多关于执行政策的信息,你可能想要关注这个链接:https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about /参阅about_Execution_Policies
使用virtualenv,它允许您创建动态python环境.在这里查看python的页面.
http://pypi.python.org/pypi/virtualenv
关于在windows上安装virtualenv中的软件包的相关问题(与系统范围相对)我可以在virtualenvs中安装Python windows软件包吗?
| 归档时间: |
|
| 查看次数: |
27894 次 |
| 最近记录: |