【发布时间】:2020-06-17 18:31:21
【问题描述】:
我在我的库开发软件中使用pathlib -
但不幸的是,我的 travis 矩阵刹车,因为在一些较旧的 python 版本(3.5 - 3.7)上
pathlib.Path 与最新的 3.8 版本不兼容。
例如,以下将适用于 python 3.8,但不适用于 3.6、3.7 等:
>>> path_test_file = pathlib.Path('./tests/mytest.txt')
>>> path_test_file.unlink(missing_ok=True)
有没有方便的方法通过 requirements.txt、pip 等升级pathlib 库?
我还尝试对旧版本的pathlib 进行猴子补丁,但失败得很惨。
正如@jakub 指出的那样,当然有程序化的解决方案,比如:
if path_test_file.exits():
path_test_file.unlink()
# or:
try:
path_test_file.unlink()
except Exception:
pass
这真的很清楚,不需要答案 - 但我不想像那样混乱我的代码。
如果需要,我宁愿包含一些模块和猴子补丁pathlib.Path,并保留所有其他代码 - 并且仍然与旧的 python 版本兼容。
也许我应该顶一下https://github.com/KenKundert/extended_pathlib/blob/master/extended_pathlib.py
【问题讨论】:
-
pathlib是 Python 标准库的一部分,我认为它不能单独更新。 -
@jakub 自 2020 年 1 月 1 日起,此存储库将不再收到任何进一步的更新,因为不再支持 Python 2。
-
@jakub,pathlib2 在 windows 上也有 unicode 字符的严重问题,这是没有选择的
-
在这种情况下,我建议编写一些适用于您需要的 python 版本的东西。以
Path.unlink(missing_ok=True)为例,您可以使用try-except来说明丢失的文件,然后您可以删除python 3.8 中新增的missing_ok关键字。
标签: python upgrade python-3.7 python-3.8 pathlib