python-3.x - 如何在 cygwin 环境中安装 anaconda windows 的 python 解释器中启用 vim 样式的命令行编辑
问题描述
在 windows 7 桌面上安装了 anaconda 3.x windows 版本。我希望能够在从 Cygwin shell 开始的 python 解释器上进行 vim 样式的命令行编辑。
我知道 Cygwin 也带有 python,因为我需要使用最新版本的 python,所以我需要使用 windows 的 anaconda 发行版。
在 /usr/local/anaconda3 安装 anaconda windows 映像后,通过 在 Windows 上以 Vi 模式使用 Python shell 中的信息 并执行了这些步骤
export CONDA_BASE_DIR=/usr/local/anaconda3
export SHELLOPTS
set -o igncr
export CONDA_DEFAULT_ENV=root
export CONDA_PREFIX=${CONDA_BASE_DIR}
cp /usr/local/anaconda3/Lib/site-packages/pyreadline/configuration/startup.py
/cygdrive/c/Users/my_windows_login
cp /usr/local/anaconda3/Lib/site-packages/pyreadline/configuration/pyreadlinecon
fig.ini
/cygdrive/c/Users/my_windows_login
export PYTHONSTARTUPPATH=c:\\Users\\my_windows_login\\startup.py
编辑 /cygdrive/c/Users/my_windows_login/pyreadlineconfig.ini 以取消注释
set_mode("vi")
history_filename("~/.pythonhistory")
history_length(200)
启动 python 解释器为
$ conda activate base
(base) $ python -i $PYTHONSTARTUP
但是通过按 Esc-k 观察到,在解释器的命令行中未启用 vi 编辑模式。
如果没有 -i 标志,python windows 二进制文件将不会在 Cygwin 环境中以交互模式启动。由于解释器在使用 -i 标志启动时不会读取 $PYTHONSTARTUP 中的内容,因此在命令行中明确指定了 $PYTHONSTARTUP,以便可以在启动时执行 startup.py 脚本。
解决方案
已下载
winpty-0.4.3-cygwin-2.8.0-x64.tar.gz
从
https://github.com/rprichard/winpty/releases
并将其解压缩到 cygwin 安装的 /usr/local 中。
readline 配置需要在 cygwin 的 $HOME 中,而不是 c:\users\<my_windows_login>
$ cp /usr/local/anaconda3/Lib/site-packages/pyreadline/configuration/startup.py $HOME
$ cp /usr/local/anaconda3/Lib/site-packages/pyreadline/configuration/pyreadlineconfig.ini $HOME
通过上述设置,当我运行 anaconda python 时
$ PATH=/usr/local/anaconda3/Library/bin:$PATH winpty /usr/local/anaconda3/python
vi 风格的命令行编辑工作正常。
推荐阅读
- php - 在php中调用接口方法时出错
- ruby-on-rails - ActiveRecord::NoDatabaseError: FATAL: role "postgres" does not exist when I try to migrate bd in rails
- r - how to group a column and that the other column is grouped to generate a contingency table in R
- python - 如何在 wx python 中使用文本大小更改文本框的大小?
- deep-learning - 为什么过滤器和要素层具有相同数量的通道?
- android - 从卡片视图访问活动中的按钮
- python - 预测频繁值的出现
- sql - SQL Server Always Encrypted Limitation
- docker - Cannot not restart a docker container with existing mounted host directory
- c - syslog to log a c string containt http request data