Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Python的SublimiteText2构建系统中的$project\u路径替换_Python_Sublimetext2_Virtualenv - Fatal编程技术网

用于Python的SublimiteText2构建系统中的$project\u路径替换

用于Python的SublimiteText2构建系统中的$project\u路径替换,python,sublimetext2,virtualenv,Python,Sublimetext2,Virtualenv,我正在尝试为基于virtualenv的Python项目建立一个Python构建系统 通常,我所有的Python virtualenv项目都是以相同的方式设置的:一个包含/src(我的代码所在的位置)和/bin的项目文件夹,其中virtualenv Python解释器与激活脚本一起存在 我想将$project\u path/src添加到PYTHONPATH环境变量中。为了调试它,我设置了一个如下的项目: { "build_systems": [ { "name": "py

我正在尝试为基于virtualenv的Python项目建立一个Python构建系统

通常,我所有的Python virtualenv项目都是以相同的方式设置的:一个包含/src(我的代码所在的位置)和/bin的项目文件夹,其中virtualenv Python解释器与激活脚本一起存在

我想将$project\u 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构建文件。结果完全相同:-变量扩展在cmd中效果良好,但在env中效果不佳

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

不确定这是否是您要查找的内容,但我做了类似的操作,设置了
“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/
|-- Include/
|-- Lib/
|-- Scripts/
|-- src/
|   |-- ospaths.py
|   |-- package/
|   |   |-- test.py
ospaths.py

import sys

def get():
    return sys.path
import ospaths

for path in ospaths.get():
    print path
package/test.py

import sys

def get():
    return sys.path
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]

对于不需要指定参数的环境变量。您是否尝试删除它们?如果没有大括号,您将获得几乎相同的输出:只有未展开的变量名,但这次没有大括号。变量替换是否可能在env中不起作用?真奇怪。我不认为
env
会是个问题;相反,可能是您将生成系统添加到
sublime项目
文件,而不是
sublime生成
文件。您是否尝试过定制其中的一个,或者您是否有理由需要将构建文件保存在
sublime项目
文件中?没有区别-是否有人可以验证变量可以在环境中使用?