使用setup.py安装软件包时出现问题

问题描述

我已设置setup.py,以从我从项目的虚拟环境生成的requirements.txt中获取依赖项。如下:

在我的视线中:

pip3 freeze > requirements.txt

然后:

with open('requirements.txt') as f:
    required = f.read().splitlines()

setuptools.setup(
    ...
    install_requires=required,...
)

但是,当我尝试安装软件包时,显示了此错误

raise RequirementParseError(str(e))
pip._vendor.pkg_resources.RequirementParseError: Parse error at "'(===file'": Expected stringEnd

因此,在检查我的requirements.txt文件时,我发现这必须是软件包安装失败的根本原因:

avro-python3===file-.avro-VERSION.txt

我没有明确安装它,这是一个传递依赖。当我尝试安装avro-python3时,出现以下错误

Requirement already satisfied: avro-python3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (file-.avro-VERSION.txt)

该如何解决我的问题?

谢谢。

解决方法

发生此错误是因为setup方法不希望版本具有file-.avro-VERSION.txt格式。我怀疑字符“-”会困扰解析器,因为它期望字符串结尾而不是该字符。

我建议您尝试使用requirements.txt文件上的the official versions之一,问题应该消失了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...