【问题标题】:Zshrc launching python prompt - multiple pythonsZshrc 启动 python 提示符 - 多个 python
【发布时间】:2022-11-05 02:11:09
【问题描述】:

我想知道这是否都是 PATH 问题。我有 MacBook Pro 12.6,带有自制软件。没有 pyenv 或 virtualenv。 (也许我应该..)我正在使用 nvim。 当我启动 iterm 时,它会将 python 启动到 python 命令提示符而不是我的 zsh 提示符。当我ctrl D 时,它直接进入 zshell 提示,没有任何抱怨。

Last login: Sun Oct 23 10:07:06 on ttys001
/etc/zshrc:7: command not found: locale
Python 3.9.6 (default, Sep 19 2022, 18:46:30)
[Clang 14.0.0 (clang-1400.0.29.201)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

我的 /etc/paths 是

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

我的 .zshenv 是

export PATH=/Users/np/.local/bin:$PATH

我的 .zsh_profile 是

export PATH="$PATH:/usr/bin"
export PATH="$PATH:/usr/sbin"
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PATH=/opt/homebrew/bin:$PATH

PATH=/.local/bin:$PATH
PATH=/bin:/usr/bin:/usr/local/bin:${PATH}

#clipboard 
set clipboard=unnamed

#oh-my-zsh
export ZSH="$HOME/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh


#Theme
ZSH_THEME="powerlevel10k/powerlevel10k"

#Plugins
plugins=(git zsh-autosuggestions  z )
source $ZSH/oh-my-zsh.sh

#/opt/homebrew/etc/profile.d/z.sh


#aliases
source ~/.zsh_aliases

#P10k
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
source /Users/np/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/sbin:$PATH"```

我知道 PATH 条目是一团糟。

我不知道如何修复 PATH,并且如果确实是问题所在,我也不清楚 PATHS 的优先级和顺序。我知道应该首先加载我的自制软件路径,以便系统在系统链接之前使用自制软件链接。

我认为这与我的多个蟒蛇有关,我需要关于删除哪些蟒蛇的建议 - 大概除了自制软件和本机 mac 之外的所有蟒蛇,因为我主要使用自制软件。

这是

Which -a python
/opt/homebrew/bin/python3
/usr/bin/python3
/usr/local/bin/python3
/opt/homebrew/bin/python3
/usr/local/bin/python3
/opt/homebrew/bin/python3
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
/usr/bin/python3

【问题讨论】:

  • 重新安装了 neovim 并修复了 nvim 启动时未找到 Python 错误,但为什么 python 启动?
  • 检查所有startup files。如果~/.zshrc 中有python 命令,就会出现您描述的症状。
  • 您发布的错误消息清楚地提到了.zshrc,并且您发布了除此之外的所有其他启动文件。请张贴所有相关的信息在这里。
  • .zshrc 现在在上面。
  • 这基本上是一个故障排除问题。 zsh 启动序列是一个程序,或者实际上是一个程序序列。在 zsh 手册中是documented。像调试任何其他程序一样调试它。

标签: python zsh oh-my-zsh iterm


【解决方案1】:

我的建议是从一个空的 zshrc/zprofile 开始,然后从那里慢慢恢复。一次添加几行,直到你有你想要的。一次添加一项更改并进行测试是摆脱这个漏洞并找出导致您的问题的包含脚本的最佳方法。一旦添加了导致出现 python 提示的行,您就会知道在哪里进行更深入的挖掘。


这不会明确解决您的问题,但我想分享一个对我有用的设置:

就我自己而言,我发现了一种更易于管理的方式来驯服我的 zsh 设置,即将其拆分为多个文件。在 ~/.zshrc~/.zprofile 我有一行:

source ~/zsetup/main

如果您的 zshrc 和 zprofile 应该不同,则创建单独的入口点,但要重复使用公共源。

~/zsetup 的内容是我回到源代码控制中的 git 存储库(将任何秘密添加到我的 .gitignore 中)。我将配置文件和简单的 zsh 源模块化为特定于其用途的小文件,这些文件来自 zsetup/main。 git repo 允许我查看我如何随时间更改设置的审核,并允许我在格式化笔记本电脑或移至新笔记本电脑时快速恢复并运行。

zsetup/main 的示例是:

basedir=$(dirname "$0")

# Add any setup I need for brew
source "$basedir/brew"

# Add paths for things like PATH, LDFLAGS, CPPFLAGS, etc
source "$basedir/path"

# Add common operations that I do daily.
source "$basedir/aliases"

# All my fun coloring of my zsh prompt
source "$basedir/prompt"

# Environment variables needed for myapplication1
source "$basedir/myapplication1"

# Environment variables needed for myapplication2
source "$basedir/myapplication2"

# etc ...

我的 zsetup/path 的示例如下所示:

export PATH=$(brew --prefix python@3.10):$PATH
export PATH=~/Library/Python/3.10/bin:$PATH

export PATH=$(brew --prefix go):$PATH

export LDFLAGS=-L$(brew --prefix openssl@1.1)/lib
export CPPFLAGS=-I$(brew --prefix openssl@1.1)/include

# etc ...

我在zsetup/aliases 中设置了一些有趣的功能:

proxy="http://some.proxy:82"
alias with_proxy="http_proxy=$proxy https_proxy=$proxy"

alias dev_vm="ssh my.work.machine.address"

# etc ...

希望这可以帮助你!

【讨论】:

    【解决方案2】:

    当你打开一个新的终端实例时,部分启动过程运行source ~/.zshrc

    source 命令获取文件中的每一行并在当前的 shell 会话中运行它。

    如果你想找到哪一行正在启动交互式 python 解释器,你可以从 .zshrc 中逐行运行,直到找到启动 python 的那一行。

    您还应该检查来自 rc 文件的任何其他文件的内容。

    如果我冒险猜测,我会说您可能在 ~/.zsh_aliases 中有一个错误配置的别名

    别名不仅仅是一对一的文本替换,当您定义涉及子shell命令的别名时,该子shell将在首次定义别名时执行。

    例如alias py=$(python)之类的东西会导致你在首次定义别名时进入交互式python会话。当您启动新的终端会话时会发生这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多