Pipreqs requirements.txt is not correct

Val*_*nal 7 python package requirements.txt

您好,我在使用 Python 库时遇到问题pipreqs。它不会生成正确的requirements.txt文件。我正在使用 Python 虚拟环境,我安装的唯一软件包是pipreqsselenium

pip install pipreqs
pip install selenium
Run Code Online (Sandbox Code Playgroud)

项目结构:

MyProject
 |- test.py
Run Code Online (Sandbox Code Playgroud)

并且test.py只有一行:

pip install pipreqs
pip install selenium
Run Code Online (Sandbox Code Playgroud)

首先当我这样做的时候

pipreqs ./
Run Code Online (Sandbox Code Playgroud)

我遇到了错误UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3474: character maps to <undefined> ,我设法通过使用解决了

pipreqs ./ --encoding=utf-8
Run Code Online (Sandbox Code Playgroud)

但现在requirements.txt生成的结果与我的期望不符。在我看来,它应该等于:

selenium==1.341.0
Run Code Online (Sandbox Code Playgroud)

但它等于:

brotli==1.0.9
cryptography==3.2.1
ipaddr==2.2.0
lxml==4.6.1
mock==4.0.2
ordereddict==1.1
protobuf==3.13.0
pyOpenSSL==19.1.0
simplejson==3.17.2
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试克隆此代码并执行它时,pip install -r requirements.txt它不会安装selenium,并且代码不会运行。

这里发生了什么事?

Val*_*nal 15

所以我遇到的问题是我的实际工作空间是:

MyProject
 |- .venv   // <- My Python Virtual Environment
 |- test.py
Run Code Online (Sandbox Code Playgroud)

我的 Python 虚拟环境位于我的项目文件夹中,因此当我运行命令时

pipreqs ./
Run Code Online (Sandbox Code Playgroud)

它正在查看文件夹中所有文件(包括我的虚拟环境)的所有依赖关系,这就是它生成一个奇怪requirements.txt文件的原因。

为了解决这个问题,我使用了--ignorepipreqs 选项:

pipreqs ./ --ignore .venv
Run Code Online (Sandbox Code Playgroud)

生成的结果requirements.txt是:

selenium==3.141.0
Run Code Online (Sandbox Code Playgroud)

您可能还想忽略导致此类问题的其他文件夹:

pipreqs --ignore bin,etc,include,lib,lib64,.venv
Run Code Online (Sandbox Code Playgroud)

--force 标签也会覆盖现有的requirements.txt