繁体   English   中英

Windows、Python、VENV 和 Sublime Text 构建系统:激活 VENV 时出现路径错误

[英]Windows, Python, VENV, and Sublime Text Build systems: Path Error When Activating VENV

好的,我已经查看了一堆带有崇高文本问题的 python venv,我很确定这个问题是由于 windows 上的 venv 的细节造成的。

我在 Windows 上,使用 Python 3.10 和 virtualenv package 来管理我的虚拟环境。

我正在尝试在 Sublime 项目文件中设置自定义构建,该文件执行以下操作:

  • 为本地项目激活 venv
  • 将 VIRTUAL_ENV 回显到 shell 以显示正确的 venv 已激活

我一直在将两者都放入一个构建命令时遇到问题,所以这是当前数组,其中两个步骤分别构建:

    "build_systems":
    [
        {
            "name": "activate",
            "cmd": "$project_path/venv/Scripts/activate.bat",
            "shell": true
        },
        {
            "name": "Current VENV?",
            "cmd": "echo %VIRTUAL_ENV%",
            "shell": true
        },
    ]

目前,当我运行激活构建时,我得到以下信息:

The system cannot find the path specified.
[Finished in 80ms with exit code 1]
[cmd: C:\Users\kreeh\Repos\project/venv/Scripts/activate.bat]
[dir: C:\Users\kreeh\Repos\project]

If I run C:\Users\kreeh\Repos\project/venv/Scripts/activate.bat in a separate cmd.exe window, it correctly activates the venv, and when I print the %VIRTUAL_ENV% var, it correctly returns the venv地点。

C:\Users\kreeh>C:\Users\kreeh\Repos\project/venv/Scripts/activate.bat

(venv) C:\Users\kreeh>echo %VIRTUAL_ENV%
C:\Users\kreeh\Repos\project\venv

我认为这是 Sublime Text 构建系统如何处理 windows 路径格式的问题。 如果我尝试使用工作目录参数,它不起作用,因为 cmd.exe 不能很好地执行相对路径。

        {
            "name": "activate",
            "cmd": "venv/Scripts/activate.bat",
            "working_dir": "${project_path}",
            "shell": true
        },

返回

'venv' 不是内部或外部命令、可运行程序或批处理文件。 [60ms 完成]

那么,有没有办法让 Sublime Build 系统正确处理 windows 路径,或者有没有办法在 cmd 中使用相对路径?

@MattDMo 指出了我的逻辑中的缺陷,即 venv 激活本身实际上并没有做任何事情——它改变了 python 解释器,用于该提示 window 中的未来命令。 因此,对于构建系统来说,这是一种无用的东西。 相反,到目前为止,我添加了一个特定于 venv 的 pip 安装和构建命令。

{
    "build_systems":
    [
        {
            "name": "pip install",
            "cmd": "${project_path}/venv/Scripts/pip3.exe install -r requirements.txt ",
            "working_dir": "${project_path}",
            "shell": true
        },
        {
            "name": "VENV Build",
            "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
            "selector": "source.python",
            "cmd": "${project_path}/venv/Scripts/python.exe $file",
            "shell": true,
        },

    ],
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "."
        }
    ],

需要注意的一点是,作为 Windows 用户,我必须将follow_symlinks=true添加到文件夹列表中——这是因为 venv 在 windows 上的工作方式(或至少在我的安装上),没有实际的 Z2DFCZ6EEEB4343BDDB755557EE6那个venv文件夹,它是一个符号链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM