如何从另一个文件夹中获取 python 包要求?

How to get python package requirements from another folder?

这太简单了,不明白为什么它不起作用。

我在 folder1 中打开了我的 CMD。它的工作目录是 folder1.

folder1 --> folder2

我在 folder2 中有一堆 python 个文件。我想获取其 requirements.txt 文件并将其驻留在 folder1.

同样,在 folder1 打开我的 CMD,我 运行 pip freeze --path ./folder2 > requirements.txt

returns folder1 中的空 requirements.txt 文件。如果我 运行 pip freezefolder2 内,我获得一个需求列表没问题。

这看起来很基础,但为什么 --path 不能按我想要的方式工作?

您将项目文件夹与 pip 安装位置混合在一起 site-packages。这就是 --path 参数所指的内容。由于您似乎不熟悉虚拟环境,因此您没有任何虚拟环境,并且您的 2 个项目文件夹使用的是完全相同的包,您只需通过

即可获得 requirements.txt
pip freeze > requirements.txt

这对于您的 2 个项目文件夹没有什么不同。

pip freeze 输出的是安装的软件包列表。通常它只是读取 site-packagespath 参数只是限制它应该列出哪些包,所以你说 从文件夹 1 中取出所有 site-packages 并将它们限制在文件夹 2 下,这显然 returns空列表。

你想要做的是 运行 正确的 pip - 我猜你在 folder2 下有一些 virtualenv,所以它将是 folder2/<your venv>/bin/pip freeze.如果你还没有,那么实际上你通过 pip 安装的所有东西都会进入同一个全局 site-packages,所以你将无法仅过滤 folder2 中文件使用的文件。

我的解决方案是使用 pipreqs

CMDfolder1 中打开,我 运行 pipreqs ./folder2 --savepath requirements.txt

一个 requirements.txt 文件出现在 folder1 中。这些软件包基于 folder2.

中的 python 文件