Whenever I launch iTerm2 w/zsh i get the following message:
WARNING: python binary not found on PATH.
zsh-autoswitch-virtualenv plugin will be disabled.
If i type this i get the following path:
~ ❯ echo $PATH
/Users/macm1/opt/anaconda3/bin:/Users/macm1/opt/anaconda3/condabin:/usr/local/bin:/Users/macm1/Library/Python/3.8/bin:/Users/macm1/.pyenv/bin:/Users/macm1/.pyenv/bin:/opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/macm1/.fig/bin:/Users/macm1/.local/bin:/Users/macm1/.local/bin:/Users/macm1/.local/bin
Also:
~ ❯ which python3
/Users/macm1/opt/anaconda3/bin/python3
~ ❯ python --version
Python 3.9.7
~ ❯ ls -l /usr/bin/python
"/usr/bin/python": No such file or directory (os error 2)
In my zsh shell i have the following:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
#export PATH=/Library/Frameworks/Python.framework/Versions/3.8/bin:$PATH
export PATH=/Users/macm1/Library/Python/3.8/bin:$PATH
# Created by `pipx`
export PATH="$PATH:/Users/macm1/.local/bin"
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/macm1/opt/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/macm1/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/Users/macm1/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/Users/macm1/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
Can anyone assist with this?
so, the problem is that "zsh-autoswitch-virtualenv plugin" is checking for python on ur system.
enter image description here
but you may have installed python3.
so to fix this,
go to ur ~/.zshrc or ~/.bashrc file with vim or nano.
the add this lines at the top:
alias python=python3
alias pip=pip3
Related
This question already has answers here:
How to choose which version of python runs from terminal?
(5 answers)
Closed 5 months ago.
On my Linux server. My python version is python3.6.5.
I run my python files by typing python3 [.py file] in terminal to use python3.6.5.
However, after I download Anaconda3 on server, the python version change to python3.8.8(type python3 --version it shows python3.8.8)
So I guess Anaconda modified ~/.bashrc to change my python version(actually I am not sure which file Anaconda has modified)
I am trying to add
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.6/site-packages
to change python3 version back to python3.6.5.
But it didn't work.(type python3 --version it still show python3.8.8)
I would like to know which Python3 version the system will choose when I type python3 in terminal.
How can I change my python3 version back to python3.6.5(python3 --version python3.6.5)
my ~/.bashrc:
export PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin:/opt/bin
export MAIL=/var/spool/mail/$USER
if [ $(uname -s) = 'SunOS' ]; then
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.6/site-packages
export PATH=$PATH:/usr/ucb:/usr/ccs/bin:/usr/local/workshop/bin
export PATH=$PATH:/usr/X11R6/bin:/usr/X11R5/bin:/usr/openwin/bin
export MANPATH=/usr/man:/usr/local/man:/usr/X11R6/man:/usr/X11R5/man:/usr/motif1.2/man:/usr/share/catman:/opt/SUNWspro/man
# for CXterm
export HZINPUTDIR=/usr/X11R6/lib/X11/cxterm.dic
export HBFPATH=/usr/local/chinese/fonts/cnprint:/usr/X11R6/lib/X11/fonts/chpower
alias b5hztty='hztty -O hz2gb:gb2big -I big2gb:gb2hz'
fi
export PS1='\h:\w> '
alias ls='ls -aF'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
ulimit -c 0
umask 077
#Cache Server
...
##
## put command run after interactive login in ~/.bash_profile
##
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/research/dept8/msc/xcxia21/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/research/dept8/msc/xcxia21/anaconda3/etc/profile.d/conda.sh" ]; then
. "/research/dept8/msc/xcxia21/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/research/dept8/msc/xcxia21/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
You can create alias that call python3 and pointing to python 3.6.
alias python3='directory to python 3.6'
I am currently making my first steps with Python and try to get Anaconda running on my mac (macOS Catalania 10.15) as my default option for python. When I type "python" in my terminal though, it is still Python 2.7 that is showing up.
I found out that in order to run anaconda as a default, I need to customize my .bash_profile. But as it seems, anaconda is already set there:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
I found this question that seems to solve the same problem, but I am not sure how to apply the solution of it to my problem. A comment there states, that starting with macOS 10.15 I need to change the .zprofile. Unfortunately, I can't find the file.
Mac using default Python despite Anaconda install
I would be very greatful if any of you guys could help out!
René
Catalina by default runs zsh, which you can confirm with echo $0. The file you changed works for bash.
Copy the following anaconda init lines to .zshrc and you should be good to go:
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
The only difference with respect to your file is replacement of shell.bash with shell.zsh.
Most commonly, the installation is fine but you can't see that until you refresh your terminal window. Just close it and open a new one.
I used anaconda3 for a python3 install. And now it's my default python:
$ which python
/home/xy/anaconda3/bin/python
$ which python3
/home/xy/anaconda3/bin/python
But I need python2 as my default python.
$ which python2
/usr/bin/python2
I tried to edit my .bashrc shown below,
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/xy/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/nu
ll)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/xy/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/xy/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/xy/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
By change the line of export PATH... to
export PATH="$PATH:/home/xy/anaconda3/bin"
It didn't change anything.
How should I set python2 back as the default?
I think the cleanest way to go forward is to do following changes:
1) Edit your ~/.bashrc and do following modifications
Keep this block. Do not edit it. If you already deleted it, you can recreate it by typing conda init bash.
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/xy/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/nu
ll)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/xy/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/xy/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/xy/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
2) Make sure you /home/xy/anaconda3/bin is not added to PATH outside of this block. If so, delete those.
3) Call conda config --set auto_activate_base False in your shell
From now on, you have to activate the anaconda environment manually with conda activate base. If you do not call this, you will default back to your system python.
with command "lsb_release -a",
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
I followed this page,
https://github.com/pyenv/pyenv#basic-github-checkout
but installation failed.
cloned https://github.com/pyenv/pyenv
add command
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
source ~/.bash_profile
returns :No such file or directory
also, my echo "$PATH" is /home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/plugins/ruby-build/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/plugins/ruby-build/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/plugins/ruby-build/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/home/vagrant/.rbenv/plugins/ruby-build/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
how can I solve this?
also here is my ~/.bash_profile below...
[[ -f ~/.bashrc ]] && source ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
MY TERMINAL PHOTO: bashrc exists and One&only
Here is my ~/.bash_profile
vagrant#vagrant-ubuntu-trusty-64:~$ cat ~/.bash_profile
[[ -f ~/.bashrc ]] && source ~/.bashrc
#export PYENV_ROOT="$HOME/.pyenv"
#export PATH="$PYENV_ROOT/bin":$PATH
vagrant#vagrant-ubuntu-trusty-64:~$
Here is my ~/.bashrc
vagrant#vagrant-ubuntu-trusty-64:~$ cat ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
export SSL_CERT_FILE=/usr/local/share/ca-certificates/HQSSL.crt
export REQUESTS_CA_BUNDLE=/usr/local/share/ca-certificates/HQSSL.crt
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u#\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u#\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user#host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u#\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
export KAFKA_HOST="10.20.30.33"
export KAFKA_PORT=19092
alias python=python3
alias pip=pip3
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
#export PATH="$HOME/.pyenv/bin:$PATH"
#export PATH="$PYENV_ROOT/bin:$PATH"
#if command -v pyenv 1>/dev/null 2>&1; then
# eval "$(pyenv init -)"
#fi
#eval "$(pyenv init -)"
#eval "$(pyenv virtualenv-init -)"
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source ~/.nvm/nvm.sh
export HISTTIMEFORMAT="%d/%m/%y %T "
This error is because .bashrc file does not exist. Also it looks you are adding the pyenv environment variables to ~/.bash_profile and trying to source the .bashrc file.
Try sourcing the file that you've modified
source ~/.bash_profile
or reload the shell with changes using
exec $SHELL
Do you still have issue with this command?
source ~/.bash_profile
Anyway, WARNING, I think you have a syntax issue in your file, with the quotes in PATH definition, making it think the whole is only one path, you should change like this:
export PATH="$PYENV_ROOT/bin":$PATH
See the modified quotes' position.
Additional information, after your edit:
there are still badly placed quotes, please update all following
export PATH="$HOME/.rbenv/bin:$PATH" by export PATH="$HOME/.rbenv/bin":$PATH
you should add safe-guard when using rbenv, for instance replace your eval line, by command -v rbenv 1>/dev/null 2>&1 && eval "$(rbenv init -)"
at the end of your .bashrc, you MUST remove useless backslack before source files (and use -f, instead of -s), at end it should give:
[ -f "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -f "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
And thus, your final source ~/.nvm/nvm.sh is useless because it would have already be done by your if instruction if the file exists.
Anyway, if it is still not working, could you give output of:
bash -x ~/.bashrc
I'm executing with pycharm the following:
print(os.environ["PATH"]) # returns '/usr/bin:/bin:/usr/sbin:/sbin'
But when I execute echo $PATH in a shell this is returned:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin
I tried to edit it in Preferences > Console > Python Console > Environment Variables, setting
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin
but this is not working
any idea?
On Ubuntu, using zsh, I stumbled upon the same problem.
The hack I use in order to have the same environment variables in PyCharm and my shell is to launch PyCharm from my terminal instead of using the icon. It looks like this way that the PyCharm shell inherits from the main shell it's been launched from.
I hope it can solve other people's problem as I wasn't able to replicate #Steve Tarver's solution on Linux (.../terminal/.zshrc was read only on /snap/, even when using sudo).
#fj123x, I'm going to guess from your post that you are
on a mac
using a shell other than bash (perhaps zsh)
If true, the problem is that the JetBrains jediterm terminal emulator is not executing all shell startup files in the correct order.
If you are using zsh, you can fix that root problem by editing the terminal plugin's .zshrc. PyCharm is in your Applications folder, open /Applications/PyCharm.app/Contents/plugins/terminal/.zshrc and replace the contents with:
#!/bin/zsh
# starver mod
# Jetbrains uses jediterm as a java terminal emulator for all terminal uses.
# There are some apparent limits on use:
# - must use old-style shebang - not the #!/usr/bin/env zsh
# - must implement the startup file loading here
#
# Note: original contents are in lib/terminal.jar
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
bindkey '^[^[[C' forward-word
bindkey '^[^[[D' backward-word
ZDOTDIR=$_OLD_ZDOTDIR
if [ -n "$JEDITERM_USER_RCFILE" ]
then
source "$JEDITERM_USER_RCFILE"
unset JEDITERM_USER_RCFILE
fi
if [ -n "$ZDOTDIR" ]
then
DOTDIR=$ZDOTDIR
else
DOTDIR=$HOME
fi
if [ -f "/etc/zshenv" ]; then
source "/etc/zshenv"
fi
if [ -f "$DOTDIR/.zshenv" ]; then
source "$DOTDIR/.zshenv"
fi
if [ -n $LOGIN_SHELL ]; then
if [ -f "/etc/zprofile" ]; then
source "/etc/zprofile"
fi
if [ -f "$DOTDIR/.zprofile" ]; then
source "$DOTDIR/.zprofile"
fi
fi
if [ -f "/etc/zshrc" ]; then
source "/etc/zshrc"
fi
if [ -f "$DOTDIR/.zshrc" ]; then
source "$DOTDIR/.zshrc"
fi
if [ -n $LOGIN_SHELL ]; then
if [ -f "/etc/zlogin" ]; then
source "/etc/zlogin"
fi
if [ -f "$DOTDIR/.zlogin" ]; then
source "$DOTDIR/.zlogin"
fi
fi
if [ -n "$JEDITERM_SOURCE" ]
then
source $(echo $JEDITERM_SOURCE)
unset JEDITERM_SOURCE
fi
If you are interested in all the gory details, or you want to see how I solved this problem so you can develop a solution for another shell, see this answer: https://stackoverflow.com/a/51006003/1089228
I work on the command line in bash and my environment, including $PATH, is set in .bash_profile. The default terminal in PyCharm is tcsh.
I changed it to bash by going
File ... Default Settings ... Tools ... Terminal ... Shell Path
and then restaring. The embedded terminal worked as expected.