我在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的问题。
有解决方法吗?
答案 0 :(得分:79)
使用pip v1.4或更高版本安装pytz
时会发生此错误,原因是行为发生了这种变化:
Pre-release Versions
从v1.4开始,pip默认只安装PEP426指定的稳定版本。如果某个版本无法解析为合规PEP426版本,则会假定它是预发行版。
如果需求说明符包含预发布版本或开发版本(例如
>=0.0.dev0
),则pip将允许该需求的预发布版本和开发版本。这不包括!=
标志。
pip install
命令还支持--pre
标志,该标志将支持安装预发布版和开发版。
pytz
包的版本标识符的格式类似于2013b
。 PEP426使用PEP440中描述的版本标识符,该标识符指定:
公共版本标识符必须符合以下方案:
N[.N]+[{a|b|c|rc}N][.postN][.devN]
由于pytz
等2013b
版本与此格式不匹配,因此pip版本1.4+将所有版本的pytz
视为预发布版本,并且默认情况下不安装它们。
如果您只是安装pytz
,可以使用--pre
标志来避免此行为,但您不希望使用此标志来安装整个项目的要求:某些软件包可能包含您不想要的不稳定的预发布版本。在这种情况下,请使用上述行为:如果您为包指定了“预发布”版本号,则pip将搜索包的“预发布”版本。所以我已将此添加到我的requirements.txt
:
pytz>=2013b
当我升级我的软件包时,pip现在会正确搜索并安装最新版本的pytz
。
此内容已归档为issue #1204837 in the pytz bug tracker和issue #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属性。