2016-05-24 14 views
2

Here魚のPYTHONPATHに追加する方法を読みましたが、それは1つの文字列に対してうまくいきます。私はこれを行う場合魚のPYTHONPATHに*複数のパスを追加する

しかし、:

>> import os 
>> os.environ["PYTHONPATH"] 
'path1\x1epath2' 

代わり::

set --export PYTHONPATH $PYTHONPATH path1 path2

は、私がこれを取得

$ python -c "import os; print os.environ['PYTHONPATH']" 
path1path2 

ここで何が悪いのでしょうか?

答えて

0

環境変数のパスをコロンで区切って複数のパスを設定できます。私は魚を使用しませんが、ZSHに例えば、私がやるだろう:

$ export PYTHONPATH=/path/to/foo:/path/to/bar 
$ python -c "import sys; print sys.path" 
['', '/path/to/foo', '/path/to/bar', ... 
+0

を参照してください。 PYTHONPATH $ PYTHONPATH "path1; path2" 'を実行し、' 'path1; path2''を単一のパスとして取得しました。魚では、通常、スペースを区切って複数の要素を設定します。 – Xiphias

+1

はい、しかし、魚は必ずしもこれらの環境変数を使用するとは限りません。もしPythonがコロンで区切られた文字列を必要とするならば、 'set -x PYTHONPATH" $ PYTHONPATH:path1:path2 "' –

+1

@Xiphiasはセミコロンではなくコロン区切りにしてください。これは '環境変数os.environ'に単一の環境変数として現れますが、これはちょうど1つですが、' sys.path'(これはやりとりしたいものです)に2つの項目として追加されます。 – dcrosta

2

をあなたは魚2.2.0(または単にリリース2.3.0)を使用している場合は、その唯一の3のenv VARSがありますPATH、MANPATH、CDPATHなどのコロンで自動的に分割および結合されます。他のすべての "path"リストのenv変数は、例のように複数の値に明示的に設定しない限り、単一要素配列として扱われます。ただし、エクスポート時にこの値を指定すると、値はASCII RS(0x1E)文字で区切られます。あなたはbash、zshなどと同じようにPYTHONPATHを処理する必要があります。

魚プロジェクトには、このような変数の扱いについて改善可能な点がいくつか議論されています。私のために動作しません

https://github.com/fish-shell/fish-shell/issues/2090

https://github.com/fish-shell/fish-shell/issues/1656

https://github.com/fish-shell/fish-shell/issues/436

関連する問題