Virtualenv: 缺少pipx.y,而是出现了pip-xy

创建于 2020-03-15  ·  4评论  ·  资料来源: pypa/virtualenv

问题

在virtualenv 20.0.10中,至少在创建virtualenv环境时,pip主版本文件的命名约定已更改。

在16.7.x中,在20.0.2中有pip3.7 ,它已更改为pip-3.7尽管在提供多个环境和构建的自动化模式方面,两者都仍然有pip3可能有许多使用pip${MAJOR_VERSION}模式的构建依赖项。

也许添加符号链接来遵守较早的命名约定可能会阻止许多人花费大量时间进行调试。

环境

  • 作业系统:CentOS 8
  • 作业系统Python:Python 3.6.8
  • 用于virtualenv的python解释器是从源代码编译的Python 3.7.6。
  • 系统点列表
pip list --format=columns

Package             Version
------------------- -------
appdirs             1.4.3
asn1crypto          0.24.0
cffi                1.11.5
configobj           5.0.6
cryptography        2.3
dbus-python         1.2.4
decorator           4.2.1
distlib             0.3.0
filelock            3.0.12
gpg                 1.10.0
idna                2.5
importlib-metadata  1.5.0
importlib-resources 1.3.1
iniparse            0.4
isc                 2.0
netifaces           0.10.6
pciutils            2.3.6
perf                0.1
pip                 9.0.3
ply                 3.9
pycparser           2.14
pygobject           3.28.3
pyOpenSSL           18.0.0
pyparsing           2.1.10
python-dateutil     2.6.1
python-dmidecode    3.12.2
python-linux-procfs 0.6
pyudev              0.21.0
rhnlib              2.8.6
rpm                 4.14.2
schedutils          0.6
selinux             2.9
sepolicy            1.1
setools             4.2.2
setuptools          39.2.0
six                 1.11.0
slip                0.6.4
slip.dbus           0.6.4
syspurpose          1.25.17
zipp                3.1.0

复制

cd /opt
pip install virtualenv==20.0.10

pip list --format=columns | grep virtualenv
virtualenv          20.0.10

virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_20.0.10

ls -al /opt/venv_20.0.10/bin | grep pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip-3.7

pip uninstall virtualenv
pip install virtualenv==16.7.10
virtualenv --python=/opt/python_virtualenv/versions/3.7.6/bin/python3.7 venv_16.7.10

ls -al /opt/venv_16.7.10/bin | grep pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3.7
ls -al /opt/venv_20.0.10/bin
total 68
drwxr-xr-x. 2 root root 4096 Mar 15 14:08 .
drwxr-xr-x. 4 root root 4096 Mar 15 14:08 ..
-rw-r--r--. 1 root root 2206 Mar 15 14:08 activate
-rw-r--r--. 1 root root 1425 Mar 15 14:08 activate.csh
-rw-r--r--. 1 root root 3056 Mar 15 14:08 activate.fish
-rw-r--r--. 1 root root 1751 Mar 15 14:08 activate.ps1
-rw-r--r--. 1 root root 1199 Mar 15 14:08 activate_this.py
-rw-r--r--. 1 root root 1147 Mar 15 14:08 activate.xsh
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install3
-rwxr-xr-x. 1 root root  242 Mar 15 14:08 easy_install-3.7
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip3
-rwxr-xr-x. 1 root root  233 Mar 15 14:08 pip-3.7
lrwxrwxrwx. 1 root root   51 Mar 15 14:08 python -> /opt/python_virtualenv/versions/3.7.6/bin/python3.7
lrwxrwxrwx. 1 root root    6 Mar 15 14:08 python3 -> python
lrwxrwxrwx. 1 root root    6 Mar 15 14:08 python3.7 -> python
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel3
-rwxr-xr-x. 1 root root  220 Mar 15 14:08 wheel-3.7


ls -al /opt/venv_16.7.10/bin
total 15360
drwxr-xr-x. 2 root root     4096 Mar 15 14:10 .
drwxr-xr-x. 5 root root     4096 Mar 15 14:10 ..
-rw-r--r--. 1 root root     2206 Mar 15 14:10 activate
-rw-r--r--. 1 root root     1425 Mar 15 14:10 activate.csh
-rw-r--r--. 1 root root     3090 Mar 15 14:10 activate.fish
-rw-r--r--. 1 root root     1751 Mar 15 14:10 activate.ps1
-rw-r--r--. 1 root root     1517 Mar 15 14:10 activate_this.py
-rw-r--r--. 1 root root     1147 Mar 15 14:10 activate.xsh
-rwxr-xr-x. 1 root root      245 Mar 15 14:10 easy_install
-rwxr-xr-x. 1 root root      245 Mar 15 14:10 easy_install-3.7
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3
-rwxr-xr-x. 1 root root      236 Mar 15 14:10 pip3.7
lrwxrwxrwx. 1 root root        9 Mar 15 14:10 python -> python3.7
lrwxrwxrwx. 1 root root        9 Mar 15 14:10 python3 -> python3.7
-rwxr-xr-x. 1 root root 15664944 Mar 15 14:10 python3.7
-rwxr-xr-x. 1 root root     2335 Mar 15 14:10 python-config
-rwxr-xr-x. 1 root root      223 Mar 15 14:10 wheel

所有4条评论

这是采用处理脚本创建的标准库的副作用,此处添加了脚本变体https://bitbucket.org/pypa/distlib/commits/eedb3ae9233562e970dab2212892969bd87be01c。 不能完全确定为什么16.x会在没有破折号的情况下添加它们...可能需要检查pip是否摆脱了distlibs行为,但是AFAIK pip也应该生成类似的样式。

因此,与其他人相比,pip似乎在做些奇怪的事情,尽管这也许与Linux发行版处理事物的方式以及python本身的版本是一致的:

在我看来,我们从未标准化工具应如何定义版本化脚本,以及前端如何与后端通信以实现所需的标准化。 还是应该选择前端? @pfmoore @pradyunsg觉得应该是PEP-517的一部分🤷

就目前而言,我认为这也是一种变通方法,也可以生成pipx.ypip-x.y ...

在我看来,我们从未标准化工具应如何定义版本化脚本,以及前端如何与后端通信以实现所需的标准化。

基本上是这种情况。

Pip生成的版本与distlib不匹配,因为这是我们切换到distlib之前pip使用的格式,并且向后兼容性是一个问题(IIRC)。

对于较长期的解决方案,可能应该将其标准化(实际上,整个console-scripts机制尚未标准化,因此可能需要涵盖整个领域的新PEP)。

您好,已通过virtualenv 20.0.11发布了针对此问题的修复程序; 看到https://pypi.org/project/virtualenv/20.0.11/ (https://virtualenv.pypa.io/en/latest/changelog.html#v20-0-11-2020-03-18)。 如果您的问题没有得到解决,请尝试并报告; 如果没有,请在这里评论,我们将重新打开门票。 对于给您带来的不便,我们深表歉意,并感谢您耐心等待,我们在使用此新的主要版本解决了意外的错误后,请耐心等待。
thanks

此页面是否有帮助?
0 / 5 - 0 等级