当前位置: 首页 > 面试题库 >

requirements.txt取决于python版本

韦澄邈
2023-03-14
问题内容

我正在尝试使用六个将python2软件包移植到python3(不是我自己的),以使其与两者兼容。但是,requirements.txt中列出的软件包之一现已包含在python3
stdlib中,而pypi版本在python3中不起作用,因此我想有条件地将其排除。在setup.py中执行此操作很容易,我可以执行以下操作:

if sys.version_info[0] == 2:
    requirements += py2_requirements
else:
    requirements += py3_requirements

但我也希望Requirements.txt也能反映正确的列表。我在pip文档中找不到任何内容。有人知道怎么做,或者甚至有可能吗?


问题答案:

您可以使用环境标记来实现此目的,requirements.txt因为pip 6.0

SomeProject==5.4; python_version < '2.7'
SomeProject; sys_platform == 'win32'

setuptools也通过在setup.py以下方面声明额外要求来支持它:

setup(
    ...
    install_requires=[
        'six',
        'humanize',
    ],
    extras_require={
        ':python_version == "2.7"': [
            'ipaddress',
        ],
    },
)

另请参阅需求说明符。而Strings则是相应的Python命令的字符串版本。



 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : install_requires基于python版本 (2个答案) 3个月前关闭。 我的setup.py看起来像这样: 在Python 2.6(或更高版本)下,ssl模块的安装由于以下原因而失败: 有没有一种标准的方法来定义仅针对特定python版本的依赖关系?我当然可以做到,但也许有更好的方法可以做到。 问题答案: 这只是一个列表,因此您必须在上面的某

  • 我希望在一个配置类中有多个@PostConstruct注释方法,应该依赖于@Profile调用这些方法。您可以想象这样一段代码: 然而,根据@PostConstruct的javadoc,我只能用这个注释对一个方法进行注释。在Spring的Jira https://Jira.spring.io/browse/spr-12433中有一个开放的改进。 你是如何解决这个需求的?我总是可以将这个配置类拆分为

  • 问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M

  • 问题内容: 我正在使用python库生成4个对象以并行化cpu密集任务。任务(灵感和代码从这个伟大的文章)是计算的主要因素列表中的每个整数。 main.py: 观察: 如果每个进程的目标是函数,则对于大于4000个元素的输入列表,主线程将停留在上,等待生成的进程终止并且永不返回。 如果每个进程的目标是function ,那么对于相同的输入列表,代码就可以正常工作,并且主线程返回。 这对我来说非常混

  • 问题内容: 我开始使用Python。我已经添加了和我的项目。但是,我仍然对两个文件的目的感到困惑。我读过,它是为可再发行的事物而设计的,并且是为不可再发行的事物而设计的。但是我不确定这是正确的。 如何真正使用这两个文件? 问题答案: : 这可以帮助您设置开发环境。 诸如此类的程序可用于一次安装文件中列出的所有软件包。之后,您可以开始开发python脚本。如果您计划让其他人参与开发或使用虚拟环境,则

  • 我得到这个问题与flutter pub get,试图更新dart sdk,重新启动pc添加dart sdk位置回到环境变量,删除。git文件夹。 在计算器中运行“flutter pub get”... 当前Dart SDK版本为2.13.4。 颤医生: 飞镖版: