【发布时间】:2018-10-28 04:23:49
【问题描述】:
首先,这是我的开发环境:
- Windows 7(尽管我在另一台 Windows 10 机器上遇到了同样的问题)
- Python 3.6
- Git 重击
- Sublime Text 3(版本 3.1.1,Build 3176)
- SublimeREPL
在 Git Bash 中,我创建了一个新的虚拟环境:
$ mkdir ~/.venv
$ cd ~/.venv
$ python -m venv test-env
要激活该虚拟环境,我使用:
$ source ~/.venv/test-env/Scripts/activate
注意:我必须修改激活脚本(不是 activate.bat)才能正确激活 venv。具体来说,我更改了第 40 行,如下所示:
VIRTUAL_ENV="C:\Users\my_user_name\.venv\test-env"
到
VIRTUAL_ENV="/c/Users/my_user_name/.venv/test-env"
现在,当我在 test-env 虚拟环境中时(如 Git Bash 中的“(test-env)”文本所证明的那样),我可以执行通常的操作,例如
(test-env)
$ pip install numpy
我还在 Sublime Text 3 中安装了 SublimeREPL 包。我设置了一个新的构建系统 (SublimeREPL-python.sublime-build),如下所示:
{
"target": "run_existing_window_command",
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}
现在,假设我有一个脚本
# test.py
import numpy as np
print('numpy was imported without error')
我可以输入 Ctrl+Shift+B,然后开始输入“repl”,它会自动选择 SublimeREPL-python 构建,然后按 Enter。 SublimeREPL 出现,但产生错误:
Traceback (most recent call last):
File "test.py", line 2, in <module>
import numpy as numpy
ModuleNotFoundError: No module named 'numpy'
>>>
SublimeREPL 在没有使用我的虚拟环境的情况下被调用,这会导致它抛出错误,因为我的全局 python 环境中没有安装 numpy。
如何使用 SublimeREPL 从 Sublime Text 3 运行我的 Python 脚本并访问使用 venv 创建的虚拟环境?
FWIW,我已经尝试为此代码创建一个 Sublime 项目并将以下内容添加到 .sublime-project 文件中:
"build_systems":
[
{
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"name": "test-env",
"selector": "source.python",
"shell_cmd": "\"C:\\Users\\my_user_name\\.venv\\test-env\\Scripts\\python\" -u \"$file\""
}
]
这让我可以键入 Ctrl+Shift+B,然后键入“test-env”,然后 Enter(使用我刚刚创建的 test-env 构建系统进行构建),它按预期工作并且运行没有错误。但是,它不使用我想要的 SublimeREPL,这样我就可以调试我的代码(这比我上面发布的简单测试脚本更复杂!)并探索 REPL 中的变量,而不仅仅是在控制台中运行代码.
【问题讨论】:
标签: python windows sublimetext3 sublimerepl python-venv