根据博客文章,我最近安装了 pyenv 并尝试安装 python 版本。我运行了一些命令,但遇到错误,我不确定如何解决。
$ pyenv install 3.6.6
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.6.tar.xz...
-> https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
error: failed to download Python-3.6.6.tar.xz
BUILD FAILED (OS X 10.12.6 using python-build 20180424)
Run Code Online (Sandbox Code Playgroud) 我已经使用 pyenv 很长时间了,没有任何问题。我正确设置了它并且一切正常。
然而,当我试图解决另一个问题时,我运行了一些行,这破坏了我的 pyenv 安装。
现在,当我激活任何 virtualenv 时,它会尝试使用系统的 python 而不是 pyenv 的:
$ pyenv activate foo
(foo) $ which python
/usr/bin/python
(foo) $ pip --version
pip 20.3.4 from /home/rodrigo/.local/lib/python2.7/site-packages/pip (python 2.7)
Run Code Online (Sandbox Code Playgroud)
我不确定到底是哪一行破坏了它,可能是以下一行:(foo) $ pip install --upgrade pip setuptools wheel 来自环境foo(我在它仍然有效时运行它),但可能是另一行。
我已经检查过~/.bashrc文件,没问题;重新启动控制台,甚至换了不同的环境foo2,问题仍然存在......
我已经检查了类似的问题,例如this或this,但这些与我已经测试过并且没问题的配置错误有关。
我正在使用 Ubuntu 18.04 LTS 和 pyenv 2.0.3-8-gad880754
更新我重新安装了 pyenv 但它仍然不起作用
我已经使用homebrew在Mac上安装了pyenv并下载了Python 3.7.9的版本。一切正常,除了当我使用 时pyenv global 3.7.9,python3 -V仍然给我版本 3.9.7。我该如何解决?
每次创建新的 .venv 时,我都会尝试阻止此警告:
> /Users/pi/.pyenv/versions/3.10.0/bin/python -m venv .venv
> . .venv/bin/activate
> pip install ipykernel # or anything
WARNING: You are using pip version 21.2.3; however, version 22.2.2 is available.
You should consider upgrading via the '/Users/pi/code/foo/.venv/bin/python -m pip install --upgrade pip' command.
Run Code Online (Sandbox Code Playgroud)
不知何故,pyenv我的新 .venv 中填充了一个过时的点。
如果我执行建议的命令,它将升级我的 .venv 的 pip。但我不想每次创建 .venv 时都这样做。
我认为这可能会解决它,但事实并非如此:
> /Users/pi/.pyenv/versions/3.10.0/bin/python -m pip install --upgrade pip
Requirement already satisfied: pip in /Users/pi/.pyenv/versions/3.10.0/lib/python3.10/site-packages (22.2.1)
Collecting pip
Using cached pip-22.2.2-py3-none-any.whl (2.0 MB)
Installing collected packages: pip …Run Code Online (Sandbox Code Playgroud) 我刚拿到一台MacBook,克隆了我正在做的项目,然后去设置python环境。创建环境后,我更新了 pip 并尝试使用pip install -r requirements.txt. 给我带来问题的 3 个库是cltk、PyYAML和stanza。
这是执行后给我的pip install -r requirements.txt:
Collecting PyYAML==5.4.1 (from -r requirements.txt (line 56))\n Using cached PyYAML-5.4.1.tar.gz (175 kB)\n Installing build dependencies ... done\n Getting requirements to build wheel ... error\n error: subprocess-exited-with-error\n \n \xc3\x97 Getting requirements to build wheel did not run successfully.\n \xe2\x94\x82 exit code: 1\n \xe2\x95\xb0\xe2\x94\x80> [62 lines of output]\n running egg_info\n writing lib3/PyYAML.egg-info/PKG-INFO\n writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt\n writing …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 macOS 中安装virtualenvwrapper(不是pyenv-virtualenvwrapper)(使用 zsh)。我用来pyenv管理多个 python 版本并pipx安装 CLI 东西。
我正在使用Python 3.8.1
$ pyenv versions
system
2.7.17
* 3.8.1 (set by /Users/my_user/.pyenv/version)
Run Code Online (Sandbox Code Playgroud)
我用 pipx 安装了 virtualenvwrapper
$ pipx install virtualenvwrapper
$ pipx list
venvs are in /Users/my_user/.local/pipx/venvs
apps are exposed on your $PATH at /Users/my_user/.local/bin
package sshuttle 0.78.5, Python 3.8.1
- sshuttle
package virtualenv 20.0.15, Python 3.8.1
- virtualenv
package virtualenvwrapper 4.8.4, Python 3.8.1
- virtualenvwrapper.sh
- virtualenvwrapper_lazy.sh
Run Code Online (Sandbox Code Playgroud)
我插入了.zshrc以下几行:
export WORKON_HOME=$HOME/.virtualenvs
source …Run Code Online (Sandbox Code Playgroud) 我是虚拟环境的粉丝,我也喜欢将我的virtualenvs 保留在项目根目录中。这有助于我跟踪它们的位置,并允许我给它们起通用名称,例如.venv.
但我需要一种方法来安装特定版本的 python 以便与我的virtualenvs 一起使用。所有的道路似乎都指向pyenv。
除非我误解了如何工作pyenv和pyenv-virtualenv工作,否则这个库似乎坚持将我的实际 virtualenv 埋在~/.pyenv文件夹中的某个位置,并给我留下一个.python-version我不想拥有的文件。
有没有一种方法可以方便地安装特定版本的python pyenv,然后在我的项目目录中以传统方式创建我的虚拟环境,从而在pyenv创建虚拟环境后消除我的项目的依赖?
我尝试运行 pyenv install 3.8.5 但不断收到以下错误:
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 11.5.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/61/8hkv2j8j6x7d7ldfq1d201b80000gp/T/python-build.20211009182855.32315
Results logged to /var/folders/61/8hkv2j8j6x7d7ldfq1d201b80000gp/T/python-build.20211009182855.32315.log
Last 10 log lines:
checking size of _Bool... 1
checking size of off_t... 8
checking whether to enable large file support... no
checking size of time_t... 8 …Run Code Online (Sandbox Code Playgroud) 我需要使用Python 3.8。我使用以下命令安装它:
pyenv install 3.8.1
Run Code Online (Sandbox Code Playgroud)
现在的输出pyenv versions是:
system
* 3.8.1 (set by /Users/username/.pyenv/version)
Run Code Online (Sandbox Code Playgroud)
输出python -V:
Python 2.7.16
Run Code Online (Sandbox Code Playgroud)
为什么它们不同?
当我从源代码手动编译 python 时(使用--enable-shared),我在目录中得到一个动态库lib。例如:
$ ls $PYTHON_INSTALLATION_DIRECTORY/lib
libpython3.9.so libpython3.9.so.1.0 libpython3.so pkgconfig python3.9
Run Code Online (Sandbox Code Playgroud)
但是,当我使用pyenv安装 python 时,我只得到一个静态库:
$ ls .../pyenv/versions/3.9.13/lib
libpython3.9.a pkgconfig python3.9
Run Code Online (Sandbox Code Playgroud)
如何强制pyenv安装Python动态库?我应该运行什么命令而不是
$ pyenv install --verbose 3.9.13
Run Code Online (Sandbox Code Playgroud)
(我需要编译一个需要链接python动态库的软件项目)
非常感谢您的帮助!
pyenv ×10
python ×8
macos ×3
pip ×3
homebrew ×2
virtualenv ×2
apple-m1 ×1
installation ×1
path ×1
python-2.7 ×1
python-3.8 ×1
python-venv ×1
pyyaml ×1
setuptools ×1