检索Python单个脚本的需求
我想知道如何从单个python脚本中提取需求。导入后,我在文件开头立即尝试了以下方法:检索Python单个脚本的需求,python,python-3.x,pip,Python,Python 3.x,Pip,我想知道如何从单个python脚本中提取需求。导入后,我在文件开头立即尝试了以下方法: try: from pip._internal.operations import freeze except ImportError: # pip < 10.0 from pip.operations import freeze x = freeze.freeze() for p in x: print(p) 试试看: 来自pip.\u内部操作导入冻结 除此之外:#pip
try:
from pip._internal.operations import freeze
except ImportError: # pip < 10.0
from pip.operations import freeze
x = freeze.freeze()
for p in x:
print(p)
试试看:
来自pip.\u内部操作导入冻结
除此之外:#pip<10.0
从pip.operations导入冻结
x=冻结。冻结()
对于x中的p:
印刷品(p)
然而,上面的代码将返回本地安装的所有Python框架。我只想提取脚本的必要需求,以便能够部署最终的应用程序我希望我说得很清楚。使用“modulefinder”python模块可以轻松做到这一点。 我认为您需要打印脚本所需的所有模块。 所以,你可以参考 为方便起见,代码如下:
pipreqs使用简单 安装:
pip安装pipreqs
在linux中,位于脚本的同一文件夹中
使用:
pipreqs.
然后创建requirements.txt文件
pip主页:
皮普没有办法知道这一点。了解模块需求的唯一方法是有人记录它们。此外,这听起来有点像XY问题。您试图解决的实际问题是什么?创建一个虚拟环境,只安装脚本的必要要求,然后pip freeze将只提供您需要的。@grooveplex简而言之,我想提取python文件的要求,但不是本地安装的所有库!!上面提到的这段代码还给了我…开发人员负责安装的软件包和一个干净的
requirements.txt
。在工作中,我们手工维护requirements.txt
中的包,因为pip freeze
会将所有依赖项和子依赖项添加到列表中,这有时会让人困惑。尽管如此,您仍然可以使用stdlib库来检查加载的模块。我希望,我帮助了您。非常好的解决方案!如果还有检索版本控制的方法,我们还可以生成requirements.txt
文件。但我必须做的是,知道这些框架的名称是非常详尽的!;)非常感谢你!我很高兴能帮助您。我是否错误地认为这只会给您导入的模块,而不会给您需要安装pip的项目?不,它包括python脚本使用的所有类型的模块。我没有尝试过,但似乎是一个比目前接受的解决方案更好的解决方案。
from modulefinder import ModuleFinder
f = ModuleFinder()
# Run the main script
f.run_script('run.py')
# Get names of all the imported modules
names = list(f.modules.keys())
# Get a sorted list of the root modules imported
basemods = sorted(set([name.split('.')[0] for name in names]))
# Print it nicely
print ("\n".join(basemods))