我目前正在python 3.3上編寫一些代碼。不幸的是,我所依賴的一些插件還不能與Python3兼容,我需要切換回Python2.7。在代碼中添加條件取決於python版本
爲了避免重構所有的代碼,我想這樣做
if(os.python.version<3.0):
from _future_ import print, super
什麼是做這個
我目前正在python 3.3上編寫一些代碼。不幸的是,我所依賴的一些插件還不能與Python3兼容,我需要切換回Python2.7。在代碼中添加條件取決於python版本
爲了避免重構所有的代碼,我想這樣做
if(os.python.version<3.0):
from _future_ import print, super
什麼是做這個
你是在錯誤的軌道上這裏的適當的方式,在幾個計數。首先,不要檢查版本,檢查功能。在他的評論中,你可以很好地解釋這一點。
第二,如果你沒有檢查版本,即使有沒有多的拼寫錯誤,這不會在所有的工作:
if(os.python.version<3.0):
from _future_ import print, super
一個__future__
語句可以由前面只有模塊docstring,空白行,註釋行和其他__future__
語句。它不能出現在其他地方 - 如果你嘗試,你會得到一個語法錯誤。第三,對於你給的例子,檢查任何東西都是毫無意義的。在文件頂部附近,
from __future__ import print_function
在Python 2.7和Python 3中都很好。在Python 3中,它沒有任何效果。
[它們也可以在模塊docstring之前。](http://docs.python.org/2/reference/simple_stmts.html#future-statements) – user2357112
謝謝!編輯補充說。模塊可以有文檔?大聲笑;-) –
謝謝,這解決了我的問題。 – chiffa
正如zhangyangyu所說,你可以通過sys.version_info來獲取當前的python版本。
sys.version_info是元組,我總是用前三個元素版本比較是這樣的:
if sys.version_info[:3] > (3,0):
do something
elif sys.version_info[:3] > (2,5,2):
do something else
或者,你可以使用distutils.version當前的版本與指定的版本比較。
Here是關於如何使用distutils.version的答案。
http://stackoverflow.com/questions/446052/python-best-way-to-check-for-python-version-in-a-program-that-uses-new-language –
你可以使用'from __future__無條件導入print_function',但很多更改沒有簡單的將來導入來解決它們。移植你的程序需要更多的工作。 – user2357112