python-3.x venv中的pip3拒绝安装请求的setuptools版本

sg2wtvxw  于 2023-03-31  发布在  Python
关注(0)|答案(1)|浏览(160)

在这样的时刻,我真的很讨厌Python、编程和计算机。
所以,我在MINGW 64中使用当前的Python(3.10.10),我想使用一个多年没有更新的Python3包,我已经在这个平台上的Python 3.7中成功安装了它-当然,这在Python 3.10上是无用的。
所以,现在我必须再次构建这个该死的软件包。它很旧,它使用了setuptools的不推荐功能,所以现在我必须安装旧的setuptools。因为这可能会搞乱我的系统的其余部分,我想我应该在python3 -m venv mingw64_py3.10_venv中尝试这个。这很有效,我可以安装旧的setuptools:

$ pip3 install setuptools==45
Collecting setuptools==45
  Downloading setuptools-45.0.0-py2.py3-none-any.whl (583 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 583.8/583.8 kB 4.6 MB/s eta 0:00:00
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 65.5.0
    Uninstalling setuptools-65.5.0:
      Successfully uninstalled setuptools-65.5.0
Successfully installed setuptools-45.0.0

...但是在用python3 setup.py install构建包时,我得到了ModuleNotFoundError: No module named 'numpy'。好吧,所以我做了pip3 install numpy,从源代码构建需要一个该死的小时,然后scipy的安装过程再次失败-我已经可以告诉这将是另一个浪费的小时。
所以,我在想-我已经有了那些该死的numpy和scipy,为什么我不能重复使用它们?所以我发现:
Make virtualenv inherit specific packages from your global site-packages
使用virtualenv --system-site-packages创建环境。然后,激活virtualenv,当你想在virtualenv而不是系统python中安装东西时,使用pip install --ignore-installedpip install -I。这样pip将在本地安装你请求的东西,即使存在系统范围的版本。你的python解释器将首先在virtualenv的包目录中查找,所以这些一揽子计划应该会覆盖全球的一揽子计划。
好吧,我试着:

$ python3 -m venv mingw64_py3.10_venv --system-site-packages
$ source mingw64_py3.10_venv/bin/activate
$ mingw64_py3.10_venv/bin/python3.exe -m pip install --ignore-installed --upgrade pip
...
Successfully installed pip-23.0.1
$ pip3 --version
pip 23.0.1 from C:/path/to/mingw64_py3.10_venv/lib/python3.10/site-packages/pip (python 3.10)

好的,到目前为止看起来不错;现在旧的setuptools?

$ pip3 install --ignore-installed setuptools==45
Collecting setuptools==45
  Using cached setuptools-45.0.0-py2.py3-none-any.whl (583 kB)
Installing collected packages: setuptools
Successfully installed setuptools-65.5.0

等等...为什么你说Collecting setuptools==45-然后是Successfully installed setuptools-65.5.0?这怎么是“成功”呢?
我要求的是该死的版本45.0.0而不是65.5.0??

$ pip3 show setuptools
Name: setuptools
Version: 65.5.0
Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License:
Location: c:/path/to/mingw64_py3.10_venv/lib/python3.10/site-packages
Requires:
Required-by: sip

AAAARRRRHHHHHHHHHHHHHH!!!!!1!!
我不打算寻求更好地理解这种疯狂的方法-因为我知道一旦python版本3.10.11,或3.11.11,或3.14.159265359或4或$n\to\infty$出来,就会有人决定在向后兼容性上拉屎-所以即使是现在可以帮助我解决问题的答案,在几周和几个月内也将毫无用处。
所以我想知道的是,我可以在Python 3.10中创建一个venv,它继承了我的大部分系统模块,但允许我降级setuptools -如果可以,怎么做?

z2acfund

z2acfund1#

好吧,显然只是为了setuptools,我不应该使用--ignore-installed-然后它安装:

$ pip3 install setuptools==45
Collecting setuptools==45
  Using cached setuptools-45.0.0-py2.py3-none-any.whl (583 kB)
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 65.5.0
    Uninstalling setuptools-65.5.0:
      Successfully uninstalled setuptools-65.5.0
Successfully installed setuptools-45.0.0

$ pip3 show setuptools
Name: setuptools
Version: 45.0.0
Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License: UNKNOWN
Location: c:/path/to/mingw64_py3.10_venv/lib/python3.10/site-packages
Requires:

。。。我的旧 Package 也开始建造,所以这很好。。

相关问题