2013-05-26 12 views
2

我正在嘗試爲基於virtualenv的Python項目設置一個Python構建系統。

通常我所有的Python virtualenv項目都以相同的方式設置:包含/ src(我的代碼所在的地方)的單個項目文件夾和virtualenv python解釋器與激活腳本一起存在的/ bin。

我想將$ project_path/src添加到PYTHONPATH環境變量中。爲了調試這個我建立這樣一個項目:

{ 
"build_systems": 
[ 
    { 

     "name": "pythonX", 
     "env": 
     { 
      "PYTHONPATH":"${project_path}/xxxxxyy" 
     }, 
     "working_dir": "${project_path:${folder}}/src", 
     "cmd": 
     [ 
      "${project_path}/bin/python2.7", 
      "-u", 
      "$file" 
     ] 
    } 
], 
"folders": 
[ 
    { 
     "path": "/home/sal/workspace/pythonmoo" 
    } 
] 
} 

我做了一個Python腳本來測試這一點 - 我剛打印出來的sys.path(這應該拿起PYTHONPATH),但我看到下面的:

'/home/sal/workspace/pythonmoo/src/${project_path}/xxxxxyy', 

很明顯,該變量沒有擴大。

我在這裏做錯了什麼?有沒有更好的方法來實現我的目標?

更新0:

至於建議我重新實現這個作爲.sublime-build文件。結果完全一樣: - 變量擴展在cmd中工作正常,但在env中不起作用。

{ 
"env": 
{ 
    "PYTHONPATH":"$project_path/src" 
}, 
"working_dir": "${project_path:${folder}}/src", 
"cmd": 
[ 
    "${project_path}/bin/python2.7", 
    "-u", 
    "$file" 
] 
} 
+0

[我不確定你需要大括號](https://sublime-text-unofficial-documentation.readthedocs.org/en/latest/reference/build_systems.html?highlight=environment%20variables#編譯系統變量)的環境變量,不需要[佔位符](https://sublime-text-unofficial-documentation.readthedocs.org/en/latest/reference/build_systems.html?highlight=environment %20variables#佔位換變量)。你嘗試刪除它們嗎? –

+0

如果沒有花括號,你會得到幾乎相同的輸出:只是未擴展的變量名稱,但這次沒有花括號。變量替換是否可能在env中不起作用? –

+0

有多離奇。我不應該認爲'env'會是一個問題;也許是你將構建系統添加到「sublime-project」文件而不是「sublime-build」文件的事實。你是否嘗試過使用其中一個自定義屬性,還是有必要將構建文件保存在「sublime-project」文件中? –

回答

0

不知道這是你在找什麼,但是我做同樣的事情,我設置"evn":{"PYTHONPATH":"."}並將其拉我src目錄給我。

{ 
    "build_systems": [ 
     { 
      "name": "python-test", 
      "cmd": ["${project_path}/Scripts/python", "-u", "$file"], 
      "working_dir": "${project_path:${folder}}/src", 
      "selector": "source.python", 
      "env": { 
       "PYTHONPATH": "." 
      } 
     } 
    ], 
    "folders": [ 
     { 
      "path": "/C/projects/python/test" 
     } 
    ] 
} 

當我運行一個設置virtualenv的腳本時創建它。

該項目test結構爲:

test/ 
|-- Include/ 
|-- Lib/ 
|-- Scripts/ 
|-- src/ 
| |-- ospaths.py 
| |-- package/ 
| | |-- test.py 

ospaths.py

import sys 

def get(): 
    return sys.path 

package/test.py

import ospaths 

for path in ospaths.get(): 
    print path 

這給了我下面的輸出:

C:\projects\python\test\src\package 
C:\projects\python\test\lib\site-packages\setuptools-0.6c11-py2.7.egg 
C:\projects\python\test\lib\site-packages\pip-1.3.1-py2.7.egg 
C:\projects\python\test\src 
C:\Windows\system32\python27.zip 
C:\projects\python\test\DLLs 
C:\projects\python\test\lib 
C:\projects\python\test\lib\plat-win 
C:\projects\python\test\lib\lib-tk 
C:\projects\python\test\Scripts 
C:\Python27\Lib 
C:\Python27\DLLs 
C:\Python27\Lib\lib-tk 
C:\projects\python\test 
C:\projects\python\test\lib\site-packages 
[Finished in 0.6s]