Python:与项目无关的包

3
当我为Python项目创建一个虚拟环境时,会因我安装一些方便的包(比如iPython或其他我的编辑器"VS Code"依赖的包,如"pylint")而"污染"这个环境。
但是这些包对我的项目并不相关。所以如果我执行pip freeze > requirements.txt,我会发现只有很少的包与我的项目相关。
那么最好的清理方法是什么?
  • 在全局环境下安装这些包,以便我可以在开始的每个项目中使用它们?或者
  • 执行pip freeze > requirements.txt,然后编辑要求文件并删除不需要的包?

1
如果你不想让pip安装与你的项目无关的包,我脑海中唯一的解决方案就是不执行pip freeze > requirements.txt命令,而是手动安装包并创建requirements.txt文件。 - teoman
2个回答

5

我们在这里做的事情:

首先,我们有项目需求文件 - 用于部署的文件。这不是使用pip freeze构建的,而是手动编辑,因此只包含相关软件包。

然后,我们有“dev”需求文件,其中包含仅对开发有用但需要在项目上工作的软件包(例如linters、其他测试工具等)。

最后,每个人都可以维护自己的个人附加要求(如与编辑器相关的软件包等)。

请注意,使用virtualenvwrapper(它确实有助于开发安装),您可以定义钩子,在创建新的虚拟环境时安装软件包。


有没有关于如何系统地解决这个问题的资源、书籍或推荐? - Ugur
只需要上述内容和常识(不使用pip freeze来构建要求文件是一个很好的开始)。 - bruno desthuilliers

2

这里提供了一个手动准备requirements.txt的替代方案。

上述项目会根据您在项目的Python文件中所使用的导入来为您的项目准备requirements.txt

假设您的所有Python文件都在myproject中,那么在终端中执行以下操作:

$ pip install pipreqs
$ pipreqs myproject

这将为您生成一个requirements.txt文件。

这样,您可以在虚拟环境中只需执行pip install -r requirements.txt,而不是pip freeze > requirement.txt,因为您只会拥有与您的项目相关的软件包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接