簡體   English   中英

OSX + Eclipse + PyDev - PATH不正確

[英]OSX + Eclipse + PyDev - PATH isn't correct

嘗試使用Eclipse和PyDev(Debug)在OSX上運行以下腳本:

#------------------------------------------------------
import os, subprocess
from os.path import join as join_path

def cmd(command):
    print('$ ' + command)

    process = subprocess.Popen(command, shell=True, executable="/bin/bash", stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    return process.communicate() + (process.returncode,)


stdout, stderr, error_code = cmd('echo $PATH')  
print(stdout, stderr, error_code)

stdout, stderr, error_code = cmd('echo $PYTHONPATH')  
print(stdout, stderr, error_code)

stdout, stderr, error_code = cmd('which python')  
print(stdout, stderr, error_code)

stdout, stderr, error_code = cmd('which apt-get')  
print(stdout, stderr, error_code)
#------------------------------------------------------

但$ PATH不是我在.bashrc或.profile中設置的,我無法運行apt-get,它位於sw / bin中。 運行subprocess.Popen時,似乎我的$ PATH被覆蓋或設置不正確。

這是我上面腳本的輸出:

$ echo $PATH 
('/usr/bin:/bin:/usr/sbin:/sbin\n', '', 0) 
$ echo $PYTHONPATH ('/Applications/eclipse/plugins/org.python.pydev_2.6.0.2012062515/pysrc/pydev_sitecustomize:/Users/bryancdickson/Development/Lootsie/_repos/ap/ap:/Users/bryancdickson/Development/Lootsie/_repos/ap/ap/ap:/sw/bin:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC:/Library/Python/2.7/site-packages\n', '', 0) 
$ which python 
('/usr/bin/python\n', '', 0) 
$ which apt-get
> ('', '', 1)

PyDev可能設置$ PATH,與bash配置文件中的設置無關。

我建議你:

從具有正確PATH設置的bash shell啟動PyDev(我假設Eclipse將從shell繼承環境)。

要么

在Eclipse中顯式配置PATH(我不知道如何執行此操作的詳細信息,在文檔中搜索“環境變量”)。

好的,找到了解決問題的簡單方法。 在這里找到了許多好的筆記: Mac OS X中的環境變量

從終端啟動Eclipse - 雖然煩人 - 工作正常。 從我的終端類型/ Applications / eclipse / eclipse和我的環境變量中獲取:

$ echo $ PATH('/ sw / bin:/ sw / sbin:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ usr / X11 / bin:/ usr / local / mysql / bin:sw / bin:/ usr / local / mysql / bin:sw / bin:/ usr / X11R6 / bin \\ n','',0)$ echo $ PYTHONPATH('/ Applications / eclipse / plugins / org.python.pydev_2.6.0.2012062515 / pysrc / pydev_sitecustomize:/用戶/ bryancdickson /開發/ Lootsie / _repos / AP / AP:/用戶/ bryancdickson /開發/ Lootsie / _repos / AP / AP / AP:/ SW /箱:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7:/系統/資源庫/框架/ Python.framework /版本/ 2.7 / lib中/ python2.7 /開發平台 - 達爾文:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac:/系統/資源庫/框架/ Python.framework /版本/ 2.7 / lib中/ python2.7 /高原-MAC / LIB-scriptpackages:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python:/系統/資源庫/框架/ Python.framework /版本/ 2.7 / lib中/ python2.7 / LIB-TK:/System/Library/Frameworks/Python.fram ework /版本/ 2.7 / lib中/ python2.7 / lib目錄歲:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload:/系統/資源庫/框架/ Python的。 framework / Versions / 2.7 / Extras / lib / python / PyObjC:/Library/Python/2.7/site-packages:/ sw / bin \\ n','',0)$ which python('/ usr / bin / python \\ n','',0)$ apt-get('/ sw / bin / apt-get \\ n','',0)

您可以在以下位置找到內部PyDev首選項:

Window:首選項:PyDev:Interpreter - Python

這包括系統PYTHONPATH。

從終端啟動Eclipse為Eclipse 4.3工作,但它不再適用於Eclise 4.5(火星)

問題是調用subprocess.Popen時沒有正確設置PATH變量

解決方法是使用os.environ將真實PATH添加到環境中

import os
os.environ['PATH'] = os.environ['PATH']+':'+os.getenv('PATH')

這對我有用(我只需要在Python解釋器的環境中添加變量PATH及其值,請參閱首選項(首選項 - > PyDev - >解釋器 - > Python解釋器 - >環境)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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