[英]IDLE and Python have different path in Mac OS X
我正在運行Mac OS X 10.5.8。 我已經從該站點安裝了Python 2.6。 在我的應用程序目錄中。 我已將.bash_profile編輯為:
# Setting PATH for MacPython 2.6
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}"
export PATH
export PATH=/usr/local/mysql/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
export PYTHONPATH=/Users/blwatson/pythonpath:/Users/blwatson/pythonpath/django/bin:$PYTHONPATH
當我從命令提示符運行python時,可以獲得以下信息:
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 0, 4, 'alpha', 0)
檢查路徑
>>> import sys
>>> sys.path
['', '/Users/blwatson/pythonpath', '/Users/blwatson/pythonpath/django/bin', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/wx-2.8-mac-unicode']
>>>
當我進入IDLE時,我會獲得不同的體驗。
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "copyright", "credits" or "license()" for more information.
****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************
IDLE 2.6.2
>>> import django
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import django
ImportError: No module named django
>>> import sys
>>> print sys.path
['/Users/blwatson/Documents', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL', '/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/wx-2.8-mac-unicode']
我不知道發生了什么事。 我從一台筆記本電腦轉移到另一台筆記本電腦,並完成了整個TimeCapsule的工作,因此我知道會有一些沖突。 空閑從哪里獲得PATH? 為什么我不能導入Django?
與所有OS X應用程序捆綁包一樣,如果通過雙擊啟動IDLE.app
,則不會涉及外殼程序。 bash_profile
或其他外殼初始化文件不會被調用。 有一種方法可以通過使用特殊的屬性列表文件 ( ~/.MacOSX/environment.plist
)來設置用戶會話環境變量,但這確實有點麻煩,不建議這樣做。
幸運的是,有一個更簡單的解決方案:在OS X上,還可以從終端窗口中的Shell命令行調用IDLE
。 這樣,它將像您期望的那樣從該shell繼承導出的環境變量。 所以像這樣:
$ export PYTHONPATH= ...
$ /usr/local/bin/idle2.6
在2.6.2之前的OS X上,IDLE存在各種不一致和問題,具體取決於調用方式,因此,我建議在OS X上使用python.org 2.6.2或3.1版本之前的版本。
編輯:我從open(1)
手冊頁中看到,從10.4開始,通過open
啟動的應用程序還繼承了環境變量,因此也可以從命令行運行。 如果要避免打開終端窗口,可以使用AppleScript或Automator(甚至是帶有py2app的Python!)來創建簡單的啟動器應用程序。 在這種情況下,請使用open命令命令,以使啟動器應用程序不會停滯不前。 例如,在Automator中 ,選擇“ Run Shell Script
操作並添加:
export PYTHONPATH= ...
open -a "/Applications/Python 2.6/IDLE.app"
將其另存為文件格式Application
(在10.5中),您應該可以單擊一種方式來啟動定制的IDLE。
似乎是一個常見問題:
http://www.google.com/search?q=python+idle+pythonpath
不幸的是,沒有答案。 唯一的建議似乎是編輯idle
可執行文件,並添加幾行sys.path.insert(...)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.