我刚刚开始在 Windows 7 上使用 virtualenv 和 virtualenvwrapper。我已经(分别)使用 Python 2.7、3.4 和 3.5 创建了 3 个不同的测试项目
我想创建一个 requirements.txt 文件,为每个 Python 版本安装正确的二进制 lxml 模块。这样我就可以pip install -r "C:\PyModules\requirements.txt"
在我可能创建的任何 virtualenv 上运行。按照其他地方列出的示例,我尝试了这样的 requirements.txt 文件:
C:\PyModules\lxml-3.5.0-cp27-none-win_amd64.whl; python_version == '2.7'
C:\PyModules\lxml-3.5.0-cp34-none-win_amd64.whl; python_version == '3.4'
C:\PyModules\lxml-3.5.0-cp35-none-win_amd64.whl; python_version == '3.5'
但它没有用。在 2.7 环境中将此文件与 pip 一起使用会给出:
lxml-3.5.0-cp34-none-win_amd64.whl is not a supported wheel on this platform.
并在我的 3.4 环境中尝试给出:
lxml-3.5.0-cp27-none-win_amd64.whl is not a supported wheel on this platform.
我曾希望环境标记(python_version == '2.7')会导致 pip 完全跳过那些引用不适合该 Python 版本的包的行。但似乎 Python 在检查 WHL 文件时忽略了 python_version 标记。
有没有办法在单个需求文件中完成我想要的?
编辑 #1:这是 Windows 7(64 位)、pip 7.1.2 和 virtualenv 13.1.2
编辑#2:正如塞巴斯蒂安建议的那样,我尝试删除 requirements.txt 文件中数字周围的引号,这似乎是正确的方法:
C:\PyModules\lxml-3.5.0-cp27-none-win_amd64.whl; python_version == 2.7
C:\PyModules\lxml-3.5.0-cp34-none-win_amd64.whl; python_version == 3.4
C:\PyModules\lxml-3.5.0-cp35-none-win_amd64.whl; python_version == 3.5
但是在 2.7 环境下,我现在得到了这个新错误:
SyntaxError: don't know how to evaluate 'num' '2.7'
在 3.4 中仍然是这个错误:
lxml-3.5.0-cp27-none-win_amd64.whl is not a supported wheel on this platform.