2

Xcode の User Scripts メニューを使用して Python スクリプトを実行しようとしています。

私が抱えている問題は、通常の os.sys.path (~/.profile から取得) が、XCode からスクリプトを実行するときに、ターミナル (または IPython) でスクリプトを実行するときと同じようにインポートされていないように見えることです。私が得るのはデフォルトのパスだけです。つまり、次のようなことはできません

#!/usr/bin/python
import myScript

myScript.foo()

myScript は、パスに追加したフォルダー内のモジュールです。

特定のパスを os.sys.path に手動で簡単に追加できますが、モジュールを使用するすべてのパスに対して、すべてのスクリプトでそれを行う必要があります

これを設定して、他の場所で使用するのと同じパスを使用する方法はありますか?

編集: もう少し調べてみると、Xcode から実行されたスクリプトは、通常とはまったく異なる PATH を使用しているようです。Xcode でスクリプトを実行して得られるパスは次のとおりです。

PATH=/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin

私の通常のパスには /Developer/usr/bin が含まれていないと確信しています。このパスがどこから来ているのか誰にも分かりませんか?

4

6 に答える 6

4

Mac では、.profile 内の環境変数は、ターミナルの外部のアプリケーションからは見えません。

環境変数 (PATH、PYTHONPATH など) を xcode アプリで使用できるようにする場合は、~/.MacOSX/environment.plist で作成する新しい plist ファイルに追加する必要があります。

詳細については、Apple 開発者 Web サイトのEnvironmentVarsドキュメントを参照してください。

于 2008-12-13T04:23:46.337 に答える
1

私はpthファイルを使用する傾向があります。ドキュメントから。

最も便利な方法は、パス構成ファイルを、Pythonのパス上にあるディレクトリ、通常は... /site-packages/ディレクトリに追加することです。パス構成ファイルの拡張子は.pthであり、各行にはsys.pathに追加される単一のパスが含まれている必要があります。(新しいパスがsys.pathに追加されるため、追加されたディレクトリ内のモジュールは標準モジュールを上書きしません。これは、標準モジュールの固定バージョンをインストールするためにこのメカニズムを使用できないことを意味します。)

したがって、最も簡単な方法は次のことです。

echo "/some/path/I/want/to/add" > /Library/Python/2.5/site-packages/custom.pth

HTH

于 2009-11-06T03:28:58.427 に答える
1

手っ取り早いがハックな方法は、Python 用のラッパー スクリプトを用意することです。

cat > $HOME/bin/mypython << EOF
#!/usr/bin/python
import os
os.path = ['/list/of/paths/you/want']
EOF

そして、すべての XCode スクリプトを次のコマンドで開始します

#!/Users/you/bin/mypython
于 2008-12-13T02:16:06.423 に答える
1

パスを sys,path に追加するだけです。

>>> import sys
>>> sys.path
['', ... lots of stuff deleted....]
>>> for i in sys.path:
...     print i
... 

/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload
/Library/Python/2.5/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC
>>> sys.path.append("/Users/crm/lib")
>>> for i in sys.path:
...     print i
... 

/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload
/Library/Python/2.5/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC
/Users/crm/lib
>>> 
于 2008-12-13T03:18:11.773 に答える
0

私の答えが無知であると思われる場合は、ご容赦ください。私は Mac に精通しておらず、あなたの質問を誤解している可能性もあります。

Windows と Linux で、自分が書いたスクリプトを参照したい場合は、PYTHONPATH 環境変数を設定します。私の記憶が正しければ、それは os.sys.path がその値を取得するものです。

myScript.py が /Somewhere にあるとしましょう。PYTHONPATH を次のように設定します。

PYTHONPATH = /Somewhere

これで、「myScript をインポート」できるはずです。

サブフォルダーを Python パッケージとして使い始める場合は、各フォルダーでのinit .py ファイルの使用法を調べてください。

このスクリプトや他のスクリプトを常に再利用する予定がある場合は、PYTHONPATH を環境変数として設定しておく必要があります。

于 2008-12-13T03:22:09.473 に答える
0

XcodeがFinderを介してスクリプトを起動すると見なされるかどうかはわかりませんが、そうであれば、Terminalのようにユーザーの起動時にFinderがファイルを読み取っ.profileたりファイルしたりしないようです。.cshrc

それでも質問が解決しない場合は、Apple のナレッジ ベースを確認してください: QA1067を使用して環境をセットアップしてくださいplist

于 2011-11-08T17:06:47.990 に答える