![](/img/trans.png)
[英]Pycharm Project default interpreter does not match my Python system default installation?
[英]Why does `python` point to my system's default python interpreter, instead of my `pyenv` python interpreter?
python
指向我系統的默認 python 解釋器,而不是我的pyenv
python 解釋器。
我創建了 python 虛擬環境並激活它,如下所示:
pyenv virtualenv 3.8.12 test3
pyenv activate test3
然后,運行python
給我一個 python 3.7 解釋器(這是我系統的默認 python 解釋器),而不是 3.8.12。 為什么?
完整命令輸出:
root@server:/home/code-base/f# pyenv virtualenv 3.8.12 test3
Looking in links: /tmp/tmp1yp95sav
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.8.12/envs/test3/lib/python3.8/site-packages (56.0.0)
Requirement already satisfied: pip in /root/.pyenv/versions/3.8.12/envs/test3/lib/python3.8/site-packages (21.1.1)
root@server:/home/code-base/f# pyenv activate test3
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(test3) root@server:/home/code-base/f# python
Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
此外:
pyenv which python
返回/root/.pyenv/versions/test3/bin/python
command -v python
返回/opt/conda/bin/python
$PATH
: /root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/bin:/opt/conda/bin:/app/python/bin:/opt/conda/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/bin
:/root/.pyenv/bin:/opt/conda/bin:/app/python/bin:/opt/conda/bin:/ /root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/bin:/opt/conda/bin:/app/python/bin:/opt/conda/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/bin
ls -la /root/.pyenv/plugins/pyenv-virtualenv/shims
包含兩個文件夾: activate
和deactivate
。~/.profile
來源~/.bashrc
(Debian, Ubuntu, Mint):sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
echo 'eval "$(pyenv init --path)"' >>~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
重新啟動您的登錄 session 以使配置文件的更改生效。 例如,如果您在 GUI session 中,則需要完全注銷並重新登錄。
pyenv install 3.8.12
pyenv local 3.8.12
$ pyenv which python
/home/xirehat/.pyenv/versions/3.8.12/bin/python
鑒於您提供給我們的新信息,您很可能在您的~/.profile
中(或在您使用 K8s 時在您的 Dockerfile 中)作為/root/.pyenv/shim
缺少一個eval "$(pyenv init --path)"
/root/.pyenv/shim
不是$PATH
的一部分。
舊答案:
這里有兩種可能的解決方案:
要么你沒有通過以下方式將 select 作為系統默認的 3.8.12 二進制文件:
$ pyenv global 3.8.12
$ python -V
Python 3.8.12
$ pyenv versions
system
2.7.15
* 3.8.12 (set by /home/realpython/.pyenv/version)
或者/opt/conda/bin/
在$PATH
中的優先級高於 pyenv 安裝。
創建虛擬環境后,您需要激活它。 虛擬環境的 bin 目錄中有一個 shell 腳本,您需要獲取該腳本。
例如,我的默認 shell 是 zsh(在 macOS 上),在 my.zshrc 中我有以下行:
source "/Volumes/G-DRIVE Thunderbolt 3/PythonStuff/venv3.10.2/bin/activate"
因此,將在任何 zsh 實例中使用的 python 可執行文件將基於 venv。
顯然你通往 venv 的道路會有所不同,但你明白了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.