我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 安装了 3.8.2,但我想在本地机器上升级到 3.8.3,以匹配我们在生产中使用的版本。
$ ? pyenv install 3.8.3
python-build: definition not found: 3.8.3
The following versions contain `3.8.3' in the name:
miniconda-3.8.3
miniconda3-3.8.3
See all available versions with `pyenv install --list'.
If the version you need is missing, try upgrading pyenv:
brew update && brew upgrade pyenv
Run Code Online (Sandbox Code Playgroud)
好吧,让我们试试看...
$ ? brew update && brew upgrade pyenv
Updating Homebrew...
Warning: pyenv 1.2.18 already installed
Run Code Online (Sandbox Code Playgroud)
我不清楚从哪里提供 pyenv 安装的 Python 版本。我已经安装了 3.8.3:
$ ? brew info python@3.8
python@3.8: stable 3.8.3 (bottled) …
Run Code Online (Sandbox Code Playgroud) 我正在学习关于在 ubuntu 20.04 上设置火炬的教程,其中一行需要设置pyenv
,就像 python 的 virtualenv 这样我可以运行多个版本的 python。有点不必要,但这是一个学习过程,也是学习另一天我可能会使用的另一种新工具的好机会。
所以这个命令在成功设置 pyenv 后失败了
sam@sam:~/torch$ pyenv virtualenv 3.8.2 torch
pyenv: no such command `virtualenv'
Run Code Online (Sandbox Code Playgroud)
所以为了涵盖我的基础知识,我已经安装了 virtualenv,如下所示
sam@sam:~/torch$ virtualenv
usage: virtualenv [--version] [--with-traceback] [-v | -q] [--app-data APP_DATA] [--clear-app-data] [--discovery {builtin}] [-p py] [--creator {builtin,cpython3-posix,venv}] [--seeder {app-data,pip}] [--no-seed]
[--activators comma_sep_list] [--clear] [--system-site-packages] [--symlinks | --copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--progress version] [--retrying version] [--urllib3 version]
[--pep517 version] [--colorama version] [--CacheControl version] [--certifi version] [--requests version] [--contextlib2 …
Run Code Online (Sandbox Code Playgroud) 有了ruby-install
,安装最新的稳定ruby版本,只需要一个ruby-install ruby
.
然而,pyenv
一个似乎需要做一些荒谬的事情pyenv install $(pyenv install --list | sed 's/^ //' | grep '^\d' | grep --invert-match 'dev\|a\|b' | tail -1)
.
有一个更好的方法吗?为什么python工具似乎总是安装最新版本这样一个钝器过程与ruby(gem update
vs pip list --outdated | awk '!/Could not|ignored/ { print $1 }' | xargs pip install --upgrade
)相比?我希望我是一个缺少的东西,但我永远找不到这个在线的简单解决方案.
我尝试使用命令"pyenv install 3.7.0"安装并获得如下错误
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
BUILD FAILED (Ubuntu 14.04 using python-build 20180424)
Run Code Online (Sandbox Code Playgroud)
我已经检查了https://github.com/pyenv/pyenv/wiki/Common-build-problems的解决方案并尝试过
CFLAGS=-I/usr/include/openssl \
LDFLAGS=-L/usr/lib64 \
pyenv install -v 3.7.0
Run Code Online (Sandbox Code Playgroud)
我再次面临同样的错误
The Python ssl extension was not compiled. Missing the OpenSSL lib?
Run Code Online (Sandbox Code Playgroud)
还试图安装低于3.7的python版本,所有版本都安装没有错误.我在这里缺少任何依赖包或版本更新.我有openssl版本
OpenSSL 1.0.1f 6 Jan 2014
Run Code Online (Sandbox Code Playgroud) 我有一个.python-version
文件,当我用github创建一个Python repo并指定它应该有一个时.gitignore
,它会将.python-version
文件添加到它.在我看来,该文件不应该被忽略,因为在不同机器上运行代码的其他人想要知道他们需要什么版本的Python.
那么为什么呢.gitignore
?
我尝试通过安装 PYENV 和 PYPIP 在我的 macOS Catalina 10.15.1 上升级我的 Python 版本,并将全局和本地设置为版本 3.8.0。但是当我尝试使用 python 版本时,它仍然显示内置在 MacOS 操作系统中的 python 版本。缺少哪一部分?
$ pyenv -v
pyenv 1.2.14
$ pypip -v
zsh: command not found: pypip
$ pyenv versions
system
* 3.8.0 (set by /Users/aj/.python-version)
$ pyenv global
3.8.0
$ pyenv local
3.8.0
$ python -V
Python 2.7.16
Run Code Online (Sandbox Code Playgroud) 我需要运行 python 3.6,但我的 mac 上有 3.9,它正在运行 Monterey。
pyenv install 3.6.9
Run Code Online (Sandbox Code Playgroud)
但我收到这些错误;
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.9.tar.xz...
-> https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz
Installing Python-3.6.9...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 12.3 using python-build 2.2.5-1-ga157725d)
Inspect or clean up the working tree at /var/folders/k1/jjq8zhm90z5by3s9rgzrr5p40000gn/T/python-build.20220317113524.63390
Results logged to /var/folders/k1/jjq8zhm90z5by3s9rgzrr5p40000gn/T/python-build.20220317113524.63390.log
Last 10 log lines:
checking for --with-cxx-main=<compiler>... no
checking for clang++... no
configure:
By default, distutils …
Run Code Online (Sandbox Code Playgroud) 我想安装 Python 3.10.5(或至少 Python >= 3.7)。我按照以下说明操作:
# Step 1. Install pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
# Step 2. Install missing headers for all the Python modules to be built
sudo zypper install readline-devel sqlite3-devel libbz2-devel
# Step 3. Install the desired Python version
pyenv install 3.10.5
Run Code Online (Sandbox Code Playgroud)
直到我到达pyenv install 3.10.5
:
bscuser@localhost:~> pyenv …
Run Code Online (Sandbox Code Playgroud) 使用以下命令安装 python 版本:
$ pyenv install 3.8.9
Installed Python-3.8.9 to /Users/robino/.pyenv/versions/3.8.9
Run Code Online (Sandbox Code Playgroud)
列出现在可用的 python 版本:
$ pyenv versions
* system
3.8.2
3.8.9
Run Code Online (Sandbox Code Playgroud)
一周过去了,我忘记了它安装在哪里。现在假设我想获取 3.8.9 版本的可执行路径。以下内容不起作用:
$ pyenv which 3.8.9
pyenv: 3.8.9: command not found
$ pyenv which python 3.8.9
(gives path to system python)
$ pyenv which python-3.8.9
pyenv: python-3.8.9: command not found
$ pyenv which Python-3.8.9
pyenv: Python-3.8.9: command not found
Run Code Online (Sandbox Code Playgroud)
我发现的解决方法是设置 python 版本,检查,然后将其设置回系统:
$ pyenv local 3.8.9
$ pyenv which python
/Users/robino/.pyenv/versions/3.8.9/bin/python
$ pyenv local --unset
Run Code Online (Sandbox Code Playgroud)
然而,这是一个次优的解决方案,因为它要求之前没有设置本地。
使用 pyenv …
pyenv ×10
python ×8
python-3.x ×3
github ×1
gitignore ×1
macos ×1
pip ×1
python-3.10 ×1
python-3.7 ×1
version ×1
virtualenv ×1