我剛通過Homebrew(真棒工具)以及它的依賴(包括gtk +)安裝pygtk;事情是當我嘗試導入GTK的python解釋器時,它會引發一個ImportError,導入pygtk或任何其他模塊時不會發生ImportError,我無法弄清楚什麼是錯的。 :S在OS X上導入gtk與Python的錯誤
回答
經過OP的澄清之後,原來的答案並沒有描述他的問題......雖然我認爲它是相關的,並且可能會幫助其他人,所以我會離開它。但首先是相關部分。
在您可以import gtk
之前,您需要撥打pygtk.require
,如本教程的Getting Started部分所示。 (欲瞭解更多詳情,請參閱PyGTK FAQ。)
這應該可以解決您的問題......但您只是與Fatal Python error: PyThreadState_Get: no current thread
一起崩潰。有很多原因可以解決這個問題,但在這種情況下最可能的情況是您正在運行鍼對不同版本的Python爲一個版本的Python構建的C擴展(pygtk
/gtk
/whatever)。 (這實際上也是covered in the PyGTK FAQ,但在這種情況下,這是CPython C擴展模塊的一個更普遍的問題,並不是PyGTK特有的。)
如果你有多個Python 2.7版本(如果你有2.7.3,非常肯定有兩個,因爲蘋果的是2.7.2),你必須弄清楚你擁有哪一個,以及哪一個你用來構建pygtk
,並確保你使用它來自同一個。
然後我們回到原來的答案,我已經在下面留下了。
有兩個原因可以讓你有這個問題。
首先,如果您還沒有安裝,除了與OS X附帶的那些額外的Python版本,你可能沒有閱讀說明書是brew
可打印出有關pygtk
只要你安裝它,或者它的信息,等:
例如:
$ brew info pygtk
pygtk: stable 2.24.0
...
==> Caveats
For non-Homebrew Python, you need to amend your PYTHONPATH like so:
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
家釀安裝Python包到/usr/local/lib/pythonX.Y-even如果它安裝蘋果的Python安裝。但是默認情況下,Apple的Python安裝不會在那裏查找軟件包。所以,你需要這樣做。
只要在終端上輸入這一行,該終端會話的其餘部分將工作。如果你想讓它永久......好吧,有很多選擇,具體取決於你想要的東西。有關詳細信息,請參見this answer。
這在Gems, Eggs and Perl Modules和Homebrew and Python更詳細地解釋。 (這是爲什麼Homebrew通常建議儘可能使用pip
而不是在brew
中尋找軟件包的多種原因之一,但也有一些例外,我很容易相信pygtk就是其中之一。)
第二,如果你安裝了自制的Python中,你可能沒有你的PATH樹立正確的,所以你在安裝包到家釀Python的網站包,但隨後運行蘋果Python安裝代替。
如果您只是輸入python
並且不知道您正在運行哪一個,which python
應該告訴您。如果它是/usr/bin/python
它是Apple的;如果是/usr/local/bin/python
,那就是Homebrew的。
您還可以從Python啓動橫幅中知道,因爲Mountain Lion自帶2.7.2,而Homebrew將安裝2.7.3。 (另外,IIRC,蘋果公司使用了一個預發佈鐺來構建他們的Python,而用Homebrew構建的任何東西都將使用您擁有的任何clang/gcc/llvm-gcc構建,而這不會是預發行版本...)
注意:僅僅因爲您在橫幅中的某處看到「Apple」這個詞並不意味着它就是Apple的Python!如果您構建自制Python,或者安裝python.org Python,它幾乎肯定會使用Apple GCC,Apple Clang或Apple LLVM-GCC構建。它也在Apple OS上運行。因此,「蘋果」或「蘋果」會在任何 Python,蘋果或不是蘋果的橫幅中出現三次。
解決方法是運行您想要運行的Python。例如:
- 使用
virtualenv
來創建基於一個或兩個安裝一個或多個虛擬環境,並從中挑選使用VENV工具。 - 始終使用完整路徑 - 例如,輸入
/usr/local/bin/python
來運行Homebrew的Python,/usr/bin/python
來運行Apple's。 (並修改任何腳本中的shebang行來做同樣的事情。) - 更改您的
PATH
變量以確保首先選擇您想要的任何一個。對於Homebrew,您需要在/ usr/bin之前安裝/usr/local/Cellar/python/2.7.3/bin(僅用於Python)或/ usr/local/bin(用於所有內容);對於蘋果,反過來說。 - 將Python框架bin目錄添加到PATH中,以便您可以與常規二進制文件分開操作它們的順序。 (這個和Homebrew Python沒什麼關係,因爲Cellar目錄服務的目的相同,但是它可以用於其他第三方Python安裝。)
所有這些都適用於其他工具。很多人陷入了困境,具有例如,一個安裝的pip
或idle
放在第一位的路徑,而不同的安裝的python
呢......
如果你已經安裝了不同的Python,例如,通過使用來自python.org的安裝程序,你可以很容易地有上述問題。例如,您可以爲python.org Python安裝東西,但運行Apple Python,並且最重要的是,也不能將其配置爲查看Homebrew站點包目錄。
感謝您的回答;我正準備回覆您的意見,我在.profile文件中添加了export PYTHONPATH =/usr/local/lib/python2.7/site-packages:$ PYTHONPATH'行,所以我認爲這不是路徑問題否則它不會在解釋器中導入pygtk)。 – Alfageme 2013-03-15 01:16:21
行動中,我不小心打進了;我想說我正在運行Apple Build;但版本是2.7.3(正如它出現在橫幅中)這可能是問題? 我在'import gtk'這行'pygtk.require(「2.0」)''''然後導入gtk;那樣的解釋器導致我這個錯誤:'致命的Python錯誤:PyThreadState_Get:沒有當前線程'任何想法? – Alfageme 2013-03-15 01:22:03
首先,如果你運行的是2.7.3,你不會運行蘋果的版本。 Apple不分發2.7.3。 (當然,你正在運行一個由蘋果公司構建的gcc/llvm-gcc/clang構建的Python,並且在蘋果公司的操作系統上運行,所以你仍然可以在旗幟中看到他們的名字一次或兩次,但這就是爲什麼我給瞭如果你不知道你正在運行哪個Python,那麼第一步就是找到它。 – abarnert 2013-03-15 01:29:36
- 1. 的Python/OS X:在導入錯誤
- 2. OS X 10.8.2 python 3導入sqlite錯誤
- 3. OS X上的Tensorflow導入錯誤
- 4. 與Python和Gtk + 3導入錯誤
- 5. 在Mac OS X上導入MySQLdb for Python時出錯
- 6. Google App Engine上的PyCrypto(1.7.0)與Mac OS X 10.8上的Python 2.7導致導入錯誤
- 7. GTK錯誤導入pynotify
- 8. Mac OS X El Capitan - Scrapy/Python導入錯誤:無法導入名稱xmlrpc_client
- 9. 錯誤在OS X
- 10. 錯誤在OS X
- 11. 在KDE上爲Python導入Gtk typelib
- 12. 在OS X上使用python 3.6導入美麗的湯
- 13. 在OS X上構建Python 3:[Python/importlib.h]錯誤133
- 14. 在os上嵌入python mex文件x
- 15. 蟒蛇在Mac OS X Lion的「導入錯誤:無法導入名urandom的」
- 16. Python 3.x導入錯誤SyntaxError
- 17. Python的OpenCV導入錯誤與python 3.5
- 18. 在OS X上安裝和導入Python模塊
- 19. 無法在Mac OS X上導入wx(Python)
- 20. Python 3.x tkinter導入錯誤
- 21. 導入錯誤與psycopg2,巨蟒3.X
- 22. 與Excel VBA OS X的日期錯誤
- 23. 在OS X上捕獲與lldb的段錯誤
- 24. 在mac OS X上使用python獲取錯誤
- 25. 錯誤在OS X上使用Python安裝OpenCV
- 26. Python在Mac OS X 10.6上錯誤安裝i386
- 27. 在OS X上安裝Python擴展,缺少MacOSX10.4u.sdk錯誤
- 28. WebSharper錯誤在Mac OS X
- 29. os x python 2.6總線錯誤
- 30. OS X上的鏈接錯誤
你確定你安裝了'pygtk'到你正在運行的同一個Python嗎? – abarnert 2013-03-15 00:48:28
另外,請注意Brew包清楚地說(當你'info','install'等等)「對於非自制Python,你需要像這樣修改你的PYTHONPATH:...」。除非你使用Homebrew Python,你是否這樣做? – abarnert 2013-03-15 00:49:47