找不到满足要求pytz的版本

时间:2013-08-14 11:50:08

标签: python pip virtualenv pytz

我在virtualenv中安装pytz时遇到问题。

  

下载/拆包pytz
        找不到满足要求pytz的版本(版本:2009r,2008b,2009f,2008c,2007g,2011g,2005m,2011e,2007f,2011k,2007k,2006j,2008h,2008i,2011e,2008a,2009e,2006g, 2011j,2010l,2005m,2008i,2005k,2008g,2007c,2007i,2009l,2009r,2006j,2011k,2007d,2006p,2009i,2009u,2007i,2009f,2010g,2008h,2009a,2007g,2011e,2006p,2012b, 2010k,2005r,2007f,2009l,2009p,2008c,2009j,2008g,2010g,2010h,2011h,2010k,2007c,2007d,2011d,2009l,2011c,2008a,2005m,2007k,2009n,2011d,2010o,2013b,2012h, 2010e,2012c,2012d,2012f,2011n,2011b,2011j,2008c,2012j,2007k,2009f,2009d,2010e,2010b,2013b,2011d,2009p,2008h,2005r,2009i,2009n,2009a,2010k,2008g,2006g, 2008b,2012c,2009i,2007g,2012c,2010h,2011n,2012g,2007d,2008a,2009u,2012g,2010o,2006p,2010b,2009u,2012d,2011k,2012f,2009a,2007f,2011h,2010l,2009j,2011g, 2009g,2009g,2005r,2011c,2012g,2009g,2012d,2009j,2010o,2007c,2010g,2006g,2009d,2010h, 2005k,2006j,2010b,2009n,2011g,2011c,2012b,2009e,2009d,2011j,2007i,2012j,2010l,2009r,2012h,2010e,2009p,2008i,2012f,2009e,2012b,2011h,2005k,2008b,2013b, 2011n,2012j,2004b)
      清理......
      没有匹配pytz

版本的发行版

似乎这是最新版本的pip的问题。

有解决方法吗?

2 个答案:

答案 0 :(得分:79)

使用pip v1.4或更高版本安装pytz时会发生此错误,原因是行为发生了这种变化:

  

Pre-release Versions

     

从v1.4开始,pip默认只安装PEP426指定的稳定版本。如果某个版本无法解析为合规PEP426版本,则会假定它是预发行版。

     

如果需求说明符包含预发布版本或开发版本(例如>=0.0.dev0),则pip将允许该需求的预发布版本和开发版本。这不包括!=标志。

     

pip install命令还支持--pre标志,该标志将支持安装预发布版和开发版。

pytz包的版本标识符的格式类似于2013bPEP426使用PEP440中描述的版本标识符,该标识符指定:

  

公共版本标识符必须符合以下方案:

N[.N]+[{a|b|c|rc}N][.postN][.devN]

由于pytz2013b版本与此格式不匹配,因此pip版本1.4+将所有版本的pytz视为预发布版本,并且默认情况下不安装它们。

如果您只是安装pytz,可以使用--pre标志来避免此行为,但您不希望使用此标志来安装整个项目的要求:某些软件包可能包含您不想要的不稳定的预发布版本。在这种情况下,请使用上述行为:如果您为包指定了“预发布”版本号,则pip将搜索包的“预发布”版本。所以我已将此添加到我的requirements.txt

pytz>=2013b

当我升级我的软件包时,pip现在会正确搜索并安装最新版本的pytz

此内容已归档为issue #1204837 in the pytz bug trackerissue #974 in the pip bug tracker

停止按:如PyTz bug report中所述,pytz的版本编号现已更改为,例如,2013.7 - 所以一旦升级到此,问题应该是不再发生。

答案 1 :(得分:0)

只是一个学生。我正在学习pytz(下载,运行,命令提示符,然后尝试IntelliJ,Project Structure,SDKS),即使删除,重做文件后也无法导入。阅读启动类型错误列表。我转向钟摆。它与以前使用pytz的脚本一起使用。只是一个主意,而不是直接的答案。原始脚本是Buchalka(在课程中教Python3脚本,该课程不适用于IntelliJ)和pytz。使脚本适应摆锤(Intellij,项目结构,SDKS,+),因此我可以体验时区。 (此代码段没有缩进)由于对Internet站点的搜索并未发现解决pytz的太多帮助。摆提供了另一种选择。

import pendulum
import datetime
country = "Europe/Paris"

tz_to_display = pendulum.timezone(country)
local_time = datetime.datetime.now(tz=tz_to_display)
print("The time in {} is {}".format(country, local_time))
print("UTC is {}".format(datetime.datetime.utcnow()))

对于那些了解更多知识和更复杂脚本的人,这里是摆锤站点。 https://pendulum.eustace.io/blog/a-faster-alternative-to-pyz.html 该站点上有一个摆锤库。它指出(塞巴斯蒂安·尤斯塔斯)

这是由于Pendulum在很大程度上依赖于Python 3.6中引入的fold属性的存在。

它在Pendulum生态系统中起作用的原因是它向后移植了DateTime类中的fold属性。