2013-07-28 39 views
0

我有一個簡單的程序,其中使用了兩個模塊,即sqlite3和twython。現在sqlite3用於python2.6,twython用於2.7。所以,如果我改變我的家當線到2.6,然後twyhton失敗即更改Python版本以調用兩個不同的模塊

python2.6 t_first.py 
ImportError: No module named twython 

如果我去做下面

python2.7 t_first.py 
ImportError: No module named _sqlite3 

任何解決方案。 此外virtualenv不是這裏最好的解決方案。

+0

你嘗試修改'sys.path'(由使用'sys.path.append')指向不能導入的各個模塊的位置?我會嘗試使用2.7並將'sys.path'指向twython模塊。我沒有使用twython,但它的github頁面聲明它與Python 2.6+兼容,所以2.7應該可以工作。 –

回答

1

sqlite3通常是python的內置函數(在2.6和2.7中)。我建議你安裝一個非破壞版本的python 2.7,並將twython安裝到網站包中。如果您不想這樣做,請將twython安裝到2.6站點程序包中。

+0

我最初想到了這一點,並試圖從頭開始安裝,但由於我沒有root訪問權限,所以很多事情都失敗了...... – LonelySoul

+0

@LonelySoul你不需要root權限就可以進行python的私有安裝。 – Marcin

+0

謝謝領先。我已經安裝了Python2.6,其中sqlite3工作正常。但是,當我通過Shebang調用Python2.6和2.7的可執行文件時,它不起作用。我找到了python命令的可執行文件,它們是/usr/bin/python2.6和/usr/local/bin/python2.7。關於爲什麼它仍然不能正常工作 – LonelySoul

-1

您可以使用異常處理來管理導入過程。沿線的東西:

try: 
    import twython 
except ImportError: 
    import _sqlite3 

如果你認爲你需要在任何情況下存在兩個任何一個出現這種工作。如果twython不可用,這將提供twython的優先選擇並回退到_sqlite3。這是一個可以接受的邏輯等價於:

if "twython exists" import twython else import _sqlite3 

如果您想更具體的瞭解,你也可以做以下的環境:

import sys 
if sys.version_info == (2, 6): 
    import _sqlite3 
elif sys.version_info == (2, 7): 
    import twython 
+0

它是如何解決不同版本問題的。似乎更像是錯誤處理,並猶豫投入生產。 – LonelySoul

+0

@LonelySoul最初的想法爲您提供了一個if/then類型的導入選項,它基於哪些模塊存在。我更新了一些更詳細的python版本的答案,可能更適合你正在尋找的東西。思考? – Troy

+0

問題在於通過shebang行將兩個版本都實施。 – LonelySoul

相關問題