如何解决在 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-specifiers和https://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 下载,所以我不得不从源代码下载 pygame
和 tiledtmxloader
。我使用了 python==1.9.3
而不是 1.9.1
,1.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 之外,一切正常
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。