簡體   English   中英

在Mac OS X中,IDLE和Python具有不同的路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM