我需要依赖关系,因为我想把这些添加到我的RPM元数据中。在
要构建,我使用:
python setup.py bdist_rpm
当我构建包cryptography-2.2.2
时,它会创建一个文件/src/cryptography.egg-info/requires.txt
它包含:
^{pr2}$如何读取所有依赖项,计算[]
之间的表达式?在
我在用Python2.7(别问)
我需要以下输出:
idna>=2.1
asn1crypto>=0.21.0
six>=1.4.1
cffi>=1.7
enum34
ipaddress
我想省略其他部分,比如[doc]
,[test]
等等。在
requires.txt
是dependency metadata的一部分,因此您可以使用easy_install
在安装egg时使用的相同工具。假设文件requires.txt
在当前目录中:现在您可以使用
^{pr2}$Distribution.requires()
过滤当前平台的所有依赖项:如果我使用Python 2.7,列表会有所不同:
或PyPy:
现在,如果您想生成一个需求字符串列表(比如您想为
pip
生成一个需求文件),请将需求转换为字符串:PEP 508
如果您还想独立于当前平台考虑PEP 508 environment markers,那么事情可能会变得更棘手,但仍然是可管理的。首先,用env标记转换需求:
现在处理独立于平台的dep,
None
键下的dist
依赖关系图:将两个列表合并为一个字符串,准备写入需求文件:
所以我找到了一个可行的解决方案,可能还有其他的可能性,但我认为这应该适用于大多数版本
其输出如下
^{pr2}$如果我改变
requirements.txt
如下输出变为
您可以测试每行的开头是否与pip依赖关系声明格式匹配。在
Regex可能是模式匹配的最佳解决方案:
其中:
^
匹配到行/文件的开头[\w\d_-]+
多次匹配任何单词(\w
)、数字(\d
)、下划线(_
)和短划线(-
)匹配。在总而言之:
^{pr2}$结果:
相关问题 更多 >
编程相关推荐