requirements.txt
如你所说,在 java 中,我们有 pom.xml
在 python 中,你有:requirements.txt,内容如下:
# Requirements without Version Specifiers #`
nose
nose-cov
beautifulsoup4
# Requirements with Version Specifiers #`
docopt == 0.6.1 # Version Matching. Must be version 0.6.1
keyring >= 4.1.1 # Minimum version 4.1.1
coverage != 3.5 # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1 # Compatible release. Same as >= 1.1, == 1.*
要安装,请运行:
pip install -r requirements.txt
java/maven 中的依赖项
有了maven,我们就有了很好的依赖管理:
org.acme.demo.springboot:acme-api:jar:1.0.0
+- mysql:mysql-connector-java:jar:8.0.13:compile
+- io.jsonwebtoken-jjwt:jar:0.9.1:compile
| \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.7:compile
| +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
| \- com.fasterxml.jackson.core:jackson-core:jar:2.9.7:compile
+- com.jayway.jsonpath:json-path:jar:2.4.0:compile
| +- net.minidev:json-smart:jar:2.3:compile
| | \- net.minidev:accessors-smart:jar:1.2:compile
| | \- org.ow2.asm:asm:jar:5.0.4:compile
| \- org.slf4j:slf4j-api:jar:1.7.25:compile
例如:我的应用是 acme-api,并且在其 pom.xml 中有这些依赖项:
-
mysql:mysql-connector-java 不依赖任何东西
-
io.jsonwebtoken-jjwt 取决于 jackson-databind、jackson-annotations 和 jackson-core
如果您查看 jackson-core 源代码,您会发现另一个 pom.xml 仅包含 jackson-core
所需的依赖项
因此,在 java/maven 中,任何源代码存储库必须有 pom.xml(应用程序或库),我们可以在其中找到或下载所需的库
python 中的依赖项
之前java/maven中任何源码中与pom.xml相关的策略,在python中都没有用到。
我查看了几个公共图书馆,但我没有在其中找到 requirements.txt o_O
只有应用程序使用 requirements.txt,例如 django。
库使用 setup.py 而不是 requirements.txt 并且所需的库被硬编码在 setup.py 中:
install_requires=["oauthlib>=3.0.0", "requests>=2.0.0"],
extras_require={"rsa": ["oauthlib[signedtoken]>=3.0.0"]},
requirements.txt 作为 pom.xml
为了标准化,您可以在任何库或应用程序中使用 requirements.txt,修改 setup.py 以从 requirements 中读取值.txt 而不是硬编码的install_requires
install_requires=["oauthlib>=3.0.0", "requests>=2.0.0"],
有了这个,你会在任何python源代码中找到一个requirements.txt,你会有点接近我们的Java中的Maven