编辑:
pip -e
安装的软件包。选项( 开发模式 )。 pip freeze
中列出。 (它在基于 Python3.9 的虚拟环境中执行)和一个简单的 import <package_name>
失败。如果软件包安装正常(即 而不是 在开发模式下)一切都按预期工作。 我正在使用
virtualenv
创建一个基于 Python 3.10 的虚拟环境。而virtualenv
完成没有错误并且似乎激活了,它仍然无法选择自己的 Python 除非 PYTHONPATH
环境变量已手动设置。我不确定我所面临的情况是由于 Ubuntu 合并 Python 的方式,还是 virtualenv 设置环境以获取本地解释器的方式。这是我到目前为止收集的内容:
python3-virtualenv
外,我根本没有接触过。使用 apt
打包.python3.10-dev
打包并以通常的方式继续创建虚拟环境:> virtualenv -p python3.10 the_env/
> source the_env/bin/activate
site-packages
目录。甚至不是 virtualenv
的那个应该正在创建,其中包括 pip
.在此安装中,如果您尝试 > pip --version
你只是得到一个错误pip
包不存在(pip
“可执行”位置被正确拾取,但因为解释器不知道它的 site-packages
它无法正确启动 pip)。长话短说,我创建了两个环境,一个基于 Python3.9(完美运行),一个基于 Python3.10(无法运行),并在 中做了一个非常简单的测试。每个 环境:
> python -m site
sys.path
包括一条通往这个特定环境的site-packages
的路径sys.path
不 包括该特定路径,但仍包括您希望找到的典型路径(例如,指向解释器本身和顶级环境目录的路径,但 不是 指向 site-packages
位置的特定路径。在此之后,我定义了一个
PYTHONPATH
手动,在激活精确指向 site-packages
的环境之前对于那个特定的环境,一切都按预期工作。我怀疑这可能与我系统的 Python 是 3.9 的事实有关,这意味着
USER_SITE
变量 是 有效,而在 Python3.10 的情况下,它不是(因为我没有使用它,这只是我正在创建的虚拟环境)。所以,我怀疑这可能会偏离 site
module determines where things are 的方式。 .由于我不确定,我想问以下问题:
virtualenv
上吗?没有明确指定 PYTHONPATH
?site
的极端情况吗?模块?最佳答案
对我有用的是从源代码安装。将源码解包后,作为总结:
$ ./configure --enable-optimizations --with-ensurepip=install --prefix=/path/to/install/to/
$ make -j
$ make test
$ make install
$ /path/to/install/to/bin/python3.10 -m venv /path/to/test
$ source /path/to/test/bin/activate
$ pip list
Package Version
---------- -------
pip 21.2.4
setuptools 58.1.0
WARNING: You are using pip version 21.2.4; however, version 21.3.1 is available.
You should consider upgrading via the '/path/to/test/bin/python3.10 -m pip install --upgrade pip' command.
$ python -m pip install --upgrade pip
[...]
$ pip list
Package Version
---------- -------
pip 21.3.1
setuptools 58.1.0
编辑如下所述,我相信上面的过程之所以能正常工作,是因为从源代码构建和安装 Python 时,安装是正确的,我怀疑 Ubuntu 21.04 中的 3.10 安装不是正确的。
我从我的主目录下的某个地方的源代码安装了我的 Python,为了不冒把事情搞砸的风险,我也没有永久修改 PATH。
将路径设置为
$PATH:/path/to/install/to/bin
不过应该没问题,无论是永久的,还是只在运行 mkvirtualenv
时都可以。 .这样做,我的新安装甚至似乎与我系统的
virtualenvwrapper
无缝集成。 .我自己并不真的需要处于 Python 的前沿,但如果我这样做了,我肯定会通过使用上述过程使自己独立于 Ubuntu 的最新开发。
顺便说一句,如果我更新
pip
直接在从源代码构建的 Python 安装中,我将不再收到有关旧的 pip
的消息(见上文)当我安装新的虚拟环境时。编辑 2
向 Ubuntu 报告的错误:
https://bugs.launchpad.net/ubuntu/+source/python3.10/+bug/1955742
编辑 3
此外,由于 Ubuntu 21.04 将在一个月左右结束生命,升级到 21.10 真的很有意义。我刚刚尝试过,似乎 Python 3.10 虚拟环境在该版本中工作得很好。
关于python-3.x - Ubuntu 21.04、Virtualenv 及其 Python 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69810545/