我正在尝试在运行 MacOS Big Sur v11.1 的笔记本电脑上安装多个版本的 Python。我最初通过此处的说明安装了 xcode 命令行工具、自制软件和 python
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install python
但是后来不由自主地将python升级到3.9,我需要回到3.7.9。所以我安装了 pyenv 并尝试按照此处的说明安装 python 3.7.9
brew install pyenv
pyenv install 3.7.9
但是我遇到了以下错误:
/var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108 /usr/local/Cellar
/var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108/Python-3.7.9 /var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108 /usr/local/Cellar
checking build system type... x86_64-apple-darwin20.2.0
checking host system type... x86_64-apple-darwin20.2.0
checking for python3.7... no
checking for python3... python3
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... …Run Code Online (Sandbox Code Playgroud) 我在 neovim (0.5) 中使用 Pyright LSP。它可以工作,但似乎只能选择标准 python 安装中可用的软件包。对于不在基本 python 中但在我的 pyenv 环境中的包,它不会自动完成。在 VSCode 中,通过选择解释器可以很容易地完成此操作。
如何在 Neovim 中设置 Pyright LSP 使用的虚拟环境或 pyenv 版本?
文章阅读:
假设我们有这些目录:
~/Projects/PyA : it'll use Python 3.4.3 with Django 2.0
~/Projects/PyB : it'll use Python 3.5.1 with Django 2.1
~/Projects/PyC : it'll use Python 3.5.6 with Django 2.2
~/Projects/PyD : it'll use Python 3.2 with python-igraph
Run Code Online (Sandbox Code Playgroud)
首先,我们安装所需的 Python 版本:
$ pyenv install 3.4.3
$ pyenv install 3.5.1
$ pyenv install 3.5.6
$ pyenv install 3.2
Run Code Online (Sandbox Code Playgroud)
我的疑惑从这里开始:
我应该这样做吗?
$ cd ~/Projects/PyA && pyenv local 3.4.3 && python3.4 -m venv …Run Code Online (Sandbox Code Playgroud) 我正在使用 pyenv 来管理 python 安装和虚拟环境 - 我希望 anaconda 成为这样的安装之一,并且能够使用 anaconda python 创建虚拟环境。使用pyenv install anaconda3-2019.03成功安装,我可以激活版本pyenv global anaconda3-2019.03:
SamLee-PC:~ max$ pyenv versions
system
2.7.10
2.7.10/envs/flask_tutorial
* 3.7.4 (set by /Users/max/.pyenv/version)
3.7.4/envs/learning_python
3.7.4/envs/microblog
3.7.4/envs/stocktool
3.7.4/envs/test1
anaconda3-2019.03
anaconda3-2019.03/envs/datsci
datsci
flask_tutorial
learning_python
microblog
stocktool
test1
SamLee-PC:~ max$ pyenv which python
/Users/max/.pyenv/versions/3.7.4/bin/python
SamLee-PC:~ max$ pyenv global anaconda3-2019.03
(anaconda3-2019.03) SamLee-PC:~ max$ pyenv which python
/Users/max/.pyenv/versions/anaconda3-2019.03/bin/python
(anaconda3-2019.03) SamLee-PC:~ max$ pyenv which conda
/Users/max/.pyenv/versions/anaconda3-2019.03/bin/conda
Run Code Online (Sandbox Code Playgroud)
(不知道为什么只有anaconda安装才在命令提示符中添加python版本)
当我创建一个新的虚拟环境 ( pyenv virtualenv anaconda3-2019.03 datsci) 时,它似乎按预期工作:
SamLee-PC:~ max$ …Run Code Online (Sandbox Code Playgroud) 已解决:解决方案是我需要 zlib1g-dev
这是 pyenv 产生的错误
Traceback (most recent call last):
File "<frozen zipimport>", line 520, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<frozen zipimport>", line 568, in _get_data
File "<frozen zipimport>", line 523, in _get_decompress_func
zipimport.ZipImportError: can't decompress data; zlib not available
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 6, in <module>
File "/tmp/python-build.20201212114143.1082/Python-3.9.0/Lib/runpy.py", line …Run Code Online (Sandbox Code Playgroud) 我已经使用 pyenv 近两年了,在运行 RHEL 8.3(Linux 内核 4.18)和 X11 模式下的 Gnome 3.32.2 的系统上没有出现任何问题。我主要使用鱼壳,但偶尔也会使用 bash,直到现在都可以与 pyenv 一起使用。但是,在pyenv update大约 24 小时前运行后,使用该pyenv activate命令激活我创建的虚拟环境之一不再设置路径以使用我在该虚拟环境中安装的内容。
当我开始终端会话时,我看到一条新消息:
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
Run Code Online (Sandbox Code Playgroud)
所以我跑了pyenv init它告诉我:
# Add pyenv executable to PATH by adding
# the following to ~/.profile:
set -Ux PYENV_ROOT $HOME/.pyenv
set -Ux fish_user_paths $PYENV_ROOT/bin $fish_user_paths
# Load pyenv automatically by appending
# the following …Run Code Online (Sandbox Code Playgroud) 我正在使用 WSL2 Ubuntu。我一直在学习使用 Fastapi 进行后端 API 开发的课程。我相信我的 Ubuntu 默认 python 是 3.8。我正在尝试使用 python 3.10.0 进行开发。我做了以下事情:
\n我的问题是,当我查看 .venv/bin 文件时,所有符号链接都显示 python 3.8。
\ndrwxr-xr-x 2 mryan mryan 4096 Feb 1 23:12 .\ndrwxr-xr-x 4 mryan mryan 4096 Feb 1 23:12 ..\n-rw-r--r-- 1 mryan mryan 2152 Feb 1 23:12 activate\n-rw-r--r-- 1 mryan mryan 1444 Feb …Run Code Online (Sandbox Code Playgroud) 设置项目并使用尚未作为系统范围二进制文件安装的早期版本的 Python 的过程是什么?
\n理想情况下,poetry add <package>应该安装到以前版本的 python,并且poetry shell应该打开一个具有正确版本的虚拟环境。
我努力了:
\nmkdir myproj\ncd myproj\n\neval "$(pyenv init -)"\npyenv install 3.8.9\npyenv local 3.8.9\n\npoetry init --no-interaction --python="3.8.9"\npoetry env use 3.8.9\npoetry add numpy\n\necho \'\nimport sys\nprint(sys.version)\n\nimport numpy\nprint(numpy.__version__)\n\' > main.py\n\npoetry shell\neval "$(pyenv init -)"\npython main.py\nRun Code Online (Sandbox Code Playgroud)\n但这给出了:
\n3.8.9 (default, May 1 2021, 22:43:00)\n[GCC 10.2.0]\nTraceback (most recent call last):\n File "main.py", line 5, in <module>\n import numpy\nModuleNotFoundError: No module named \'numpy\'\nRun Code Online (Sandbox Code Playgroud)\n...表明python运行的版本正确(如预期),但该包未安装到 python 3.8.9。的确:
\xce\xbb ls "$(poetry …Run Code Online (Sandbox Code Playgroud) 我pyenv-virtualenv在 Ubuntu 16.04 VPS 上使用 Linuxbrew (Homebrew 2.2.5) 安装。pyenv 版本是:1.2.16。现在当我做这样的测试时:
pyenv install 3.8.1
pyenv virtualenv 3.8.1 test
cd /.pyenv/versions/3.8.1/envs/test
pyenv local 3.8.1
Run Code Online (Sandbox Code Playgroud)
然后进入/离开不会激活停用虚拟环境,并且我在 shell 中看/.pyenv/versions/3.8.1/envs/test不到。(test) username:~我还创建了一个/home/users/test目录,.python-version但仍然进入/离开目录没有任何作用。
根据文档:
如果在 shell 中配置了 eval "$(pyenv virtualenv-init -)",pyenv-virtualenv 将在进入/离开包含 .python-version 文件的目录时自动激活/停用 virtualenvs,该文件包含有效虚拟环境的名称显示在 pyenv virtualenvs 的输出中(例如上面示例中的 venv34 或 3.4.3/envs/venv34)。pyenv 使用 .python-version 文件来表示本地 Python 版本,并且可以使用 pyenv local 命令创建和删除。
所以第一个问题是:为什么这不起作用?为什么在进入/离开包含文件的目录时虚拟环境没有自动激活/停用.python-version?
另外,当我手动激活 virtualenvpyenv activate test然后检查 Python 版本时,它会打印系统 Python 版本,而不是环境中的版本Python …
尝试使用 pyenv 2.1.0(来自自制程序)在 MacOS 11.6 (Intel) 上安装 Python 3.10.0 失败,并显示:
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.0.tar.xz...
-> https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz
Installing Python-3.10.0...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 11.6 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/rk/_qysk9hs40qcq14h44l57wch0000gn/T/python-build.20211006114013.40649
Results logged to /var/folders/rk/_qysk9hs40qcq14h44l57wch0000gn/T/python-build.20211006114013.40649.log
Last 10 log lines:
checking MACHDEP... "darwin"
checking for gcc... clang
checking whether the C compiler works... …Run Code Online (Sandbox Code Playgroud) pyenv ×10
python ×8
macos ×2
python-3.x ×2
python-venv ×2
anaconda ×1
fish ×1
gcc ×1
linux ×1
neovim ×1
pip ×1
pyright ×1
ubuntu ×1
virtualenv ×1