python-3.x - 测试 python 3.5 时,在 Appveyor Windows 容器中找不到 SIP 的本地包或工作下载链接
问题描述
对于持续集成,我们使用 appveyor 测试我们的 Windows 操作系统脚本,就像每次推送到 GitHub 之后一样。测试针对 python 3.5、3.6 和 3.7 启动。对于 3.6 和 3.7,一切正常。对于 3.5,测试因未找到 SIP 包而失败:
searching for SIP
Reading https://pypi.python.org/simple/SIP/
No local packages or working download links found for SIP
error: Could not find suitable distribution for Requirement.parse('SIP')
Command exited with code 1
这很奇怪,因为:
对于 python 3.6,返回是:
Searching for SIP Reading https://pypi.org/simple/SIP/ Downloading https://files.pythonhosted.org/packages/7a/49/67cc7955baf2ec5b67e141da2ab2a436cbf0f8d7c9fcab54e35df21d056b/sip-4.19.8-cp36-none-win32.whl#sha256=74da4ddd20c5b35c19cda753ce1e8e1f71616931391caeac2de7a1715945c679 Best match: sip 4.19.8 Processing sip-4.19.8-cp36-none-win32.whl Installing sip-4.19.8-cp36-none-win32.whl to c:\python36\lib\site-packages Adding sip 4.19.8 to easy-install.pth file
对于 python 3.7,返回是:
Searching for SIP Reading https://pypi.org/simple/SIP/ Downloading https://files.pythonhosted.org/packages/89/34/056db01926839dd05f80a08a579ee2f4f6625913b0620580ee580fa05fbf/sip-4.19.8-cp37-none-win32.whl#sha256=1bb10aac55bd5ab0e2ee74b3047aa2016cfa7932077c73f602a6f6541af8cd51 Best match: sip 4.19.8 Processing sip-4.19.8-cp37-none-win32.whl Installing sip-4.19.8-cp37-none-win32.whl to c:\python37\lib\site-packages Adding sip 4.19.8 to easy-install.pth file
所以对于 python 3.5 我们可以认为好的目标是 sip-4.19.8-cp35-none-win32.whl,并且通过检查https://pypi.python.org/simple/SIP/似乎它是存在的!
解决方案
问题似乎来自pip install ...
命令和命令setup (install_requires=...)
使用的方法之间的处理差异python setup.py install
。
由于我在安装命令之前编辑了 appveyor.yml 文件以使用 pip 安装所有必需的软件包python setup.py install
,因此它工作正常。
它又快又脏(我相信通过更好的配置可以做得更优雅和熟练),但它确实有效!
setup.py文件。
info.py文件。
以前的appveyor.yml文件。
新的appveyor.yml文件。
编辑: 可能更快更干净。从 pip 和 setuptools 之间观察到的差异开始,我观察到构建是从一个非常旧的 setuptools 版本开始的:
pip list
Package Version
---------- -------
pip 19.1
setuptools 28.8.0
virtualenv 15.0.1
所以我刚刚更新了setuptools:
pip install --upgrade -vv setuptools
现在一切正常,无需在 install_requires 中添加两次请求的存储库。
以前的appveyor.yml文件。
新的appveyor.yml文件。
推荐阅读
- javascript - BATCH:如何使用 node.js 按名称关闭正在运行的批处理文件
- gcc - 强制 .a 中的 .o 文件使用该 .a 中的一些符号
- javascript - Vuetify 对话框组件以正确从父组件中删除项目
- ruby-on-rails - “NameError:未初始化的常量”当假存在于同一文件中时
- python - 是否可以在保持不同列名的同时垂直堆叠两个熊猫数据框?
- flutter - Flutter:如何在底部导航时重置 TabController 索引
- java - 我需要帮助设置我的 heroku 部署 - 日志显示没有错误,页面显示 404
- google-sheets - 将公式永久锁定到某个范围,因此所有者甚至无法对其进行编辑
- php - 如何更改搜索查询的默认 wordpress URL(或路由)
- php - PHP:通过 PSR-4 自动加载是说找不到类