1

EclipseとPyDev(デバッグ)を使用して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に設定したものではなく、sw/binにあるapt-getを実行できません。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)
4

4 に答える 4

2

PyDev はおそらく、bash 構成ファイルの設定とは無関係に $PATH をセットアップします。

次のいずれかをお勧めします。

正しい PATH 設定を持つ bash シェルから PyDev を起動します (Eclipse はシェルから環境を継承すると思います)。

また

Eclipse 内で PATH を明示的に構成します (その方法の詳細はわかりません。ドキュメントで「環境変数」を検索してください)。

于 2012-08-21T07:39:28.563 に答える
1

OK、問題の簡単な解決策を見つけました。ここにいくつかの良いメモが見つかりました: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:/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:/sw/bin\n', '', 0) $ which python ('/usr /bin/python\n', '', 0) $ which apt-get ('/sw/bin/apt-get\n', '', 0)7/lib/python2.7/lib-dynload:/System/Library/Frameworks/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) $ which apt-get ('/sw/bin/apt-get\n', '' 、0)7/lib/python2.7/lib-dynload:/System/Library/Frameworks/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) $ which apt-get ('/sw/bin/apt-get\n', '' 、0)

于 2012-08-21T18:00:23.833 に答える
0

内部のPyDev設定は、次の場所にあります。

Window:Preferences:PyDev:Interpreter-Python

これには、システムPYTHONPATHが含まれます。

于 2012-08-21T08:36:33.560 に答える