:
进行更新和改进的方法是通过distutils.text_file.TextFile
。有关详细信息,请参见Acumenus答案。
根据Zaur的回答,假设您确实使用了需求文件,则可能需要进行单元测试(可能在中)tests/test_requirements.py
,以确认软件包的可用性。
此外,此方法使用子测试独立确认每个要求。这很有用,以便记录所有故障。如果没有子测试,则仅记录单个失败。
"""Test availability of required packages."""
import unittest
from pathlib import Path
import pkg_resources
_REQUIREMENTS_PATH = Path(__file__).parent.with_name("requirements.txt")
class TestRequirements(unittest.TestCase):
"""Test availability of required packages."""
def test_requirements(self):
"""Test that each required package is available."""
# Ref: https://stackoverflow.com/a/45474387/
requirements = pkg_resources.parse_requirements(_REQUIREMENTS_PATH.open())
for requirement in requirements:
requirement = str(requirement)
with self.subTest(requirement=requirement):
pkg_resources.require(requirement)
:
这样做的pythonic方法是通过pkg_resources
API。要求以setuptools可以理解的格式编写。例如:
Werkzeug>=0.6.1
Flask
Django>=1.3
示例代码:
import pkg_resources
from pkg_resources import DistributionNotFound, VersionConflict
# dependencies can be any iterable with strings,
# e.g. file line-by-line iterator
dependencies = [
'Werkzeug>=0.6.1',
'Flask>=0.9',
]
# here, if a dependency is not met, a DistributionNotFound or VersionConflict
# exception is thrown.
pkg_resources.require(dependencies)