在 python virtualenv 中安装旧版本的依赖项并收到错误:找不到 tiledtmxloader==3.1.0

问题描述

我正在尝试运行 old github project。它在 python2.7 上运行,因此我为它创建了一个 virtualenv,它使用 pip==20.3.4 并尝试安装所有内容并在 source ./venv/bin/activate

内运行它

其中的依赖项列为

      install_requires = ['Django == 1.5.1','pyglet >= 1.1.4','tiledtmxloader >= 3.0.3','pygame>=1.9.1',],

但是由于这些软件包的最新版本不会与 python2.7 或项目的原样一起使用,因此我将这些依赖项更改为 == 而不是 >=

      'Django == 1.5.1','pyglet == 1.1.4','tiledtmxloader == 3.0.3','pygame==1.9.1',

我能够安装旧版本的 pyglet 但对于其他软件包,我收到了类似的错误

ERROR: Could not find a version that satisfies the requirement tiledtmxloader==3.1.0 (from versions: 3.1.0.131)
ERROR: No matching distribution found for tiledtmxloader==3.1.0

RROR: Could not find a version that satisfies the requirement pygame==1.9.1 (from versions: 1.9.2b5,1.9.2b6,1.9.2rc1,1.9.2,1.9.3,1.9.4.dev0,1.9.4rc1,1.9.4,1.9.5.dev0,1.9.5rc1,1.9.5rc2,1.9.5,1.9.6rc1,1.9.6rc2,1.9.6,2.0.0.dev1,2.0.0.dev2,2.0.0.dev3,2.0.0.dev4,2.0.0.dev6,2.0.0.dev8,2.0.0.dev10,2.0.0.dev12,2.0.0.dev14,2.0.0.dev16,2.0.0.dev18,2.0.0.dev20,2.0.0.dev22,2.0.0.dev24,2.0.0,2.0.1.dev1,2.0.1)
ERROR: No matching distribution found for pygame==1.9.1

是否可以下载这些软件包的旧版本?我想要做的就是执行程序,因此下载旧包并按原样运行程序比尝试将其转换为 python3 更有意义。我什至不知道我更新后是否会喜欢这个程序。


我想知道如何下载这些包,以便我可以按原样运行项目,而无需进行任何编辑

解决方法

默认情况下,pip 会从 Python Pakckage Index 下载软件包,因此当您运行 pip install tiledtmxloader 时,它会转到 https://pypi.org/project/tiledtmxloader/#history(嗯,实际上它会转到 Simple API)寻找与您的平台对应的版本(处理器架构,32 位与 64 位,Python 版本)。目前 tiledtmxloader 只提供了一个仅适用于 Python 3 的版本 3.1.0.131,因此它肯定不是您想要的。

在 PyPI 上有主页和下载链接,可通向 Google 代码存档。在 download 页面上有一些旧版本。我尝试了最新的 3.1.0.115,它适用于 Python 2.7。所以试试这个:

pip install https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pytmxloader/tiledtmxloader-3.1.0.115.zip

更改setup.py

  install_requires = ['Django == 1.5.1','pyglet >= 1.1.4','tiledtmxloader @ https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pytmxloader/tiledtmxloader-3.1.0.115.zip','pygame>=1.9.1',],

这是直接引用,见https://pip.pypa.io/en/stable/cli/pip_install/#requirement-specifiershttps://www.python.org/dev/peps/pep-0440/#direct-references

,

我成功了,我不得不将 install_requires 改为 == 而不是 >=

install_requires = [
    'Django == 1.5.1','pyglet == 1.1.4','tiledtmxloader == 3.0.3.114','pygame==1.9.3',

pygame 和 tiledtmxloader 无法从 pip 下载,所以我不得不从源代码下载 pygametiledtmxloader。我使用了 python==1.9.3 而不是 1.9.11.9.1

存在一些问题
pip install https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pytmxloader/tiledtmxloader-3.0.3.114.zip
pip install https://pypi.python.org/packages/61/06/3c25051549c252cc6fde01c8aeae90b96831370884504fe428a623316def/pygame-1.9.3.tar.gz#md5=ac744ea6952b68d5f2b6d02a6d8e836c

我必须在本 Stack Overflow question 中讨论的 python2 virtualenv 中完成所有这些操作。

除了我必须使用 pygame 1.9.3 而不是 1.9.1 之外,一切正常