摘要
我正在寻找一种方法来查找所有必需的pip安装语句,其中包含版本号,基于脚本中使用的import语句。我将使用结果在部署期间为环境配置创建requirements.txt文件。
问题
python中的导入名称与pip使用的包名称之间存在偏差。此外,在使用子模块时,不需要立即显示父模式的pip安装。例如,在我们的脚本中我们正在做:
import pandas as pd
#body of code
writer = pd.ExcelWriter(filename, engine='xlsxwriter')
所以,如果我们只是pip安装pandas,我们将收到一个错误,即xlsxwriter也需要安装。
尝试与研究
首次尝试
#Import Packages
import pandas as pd
from sklearn import linear_model
#Create an Array of the Package names
imports = ['pandas','sklearn']
#find installed package version on local machine for each imported package
import pip #needed to use the pip functions
for i in pip.get_installed_distributions(local_only=True):
for ii in imports:
if str(i).find(str(ii)) != -1:
print(str(i))
#pandas 0.18.1 is found but scikit-learn 0.17.1 is not
研究
SO帖子下面的内容似乎列出了所有的导入名称,但是在帖子中运行第二个答案之后,我希望看到的导入名称如'sklearn'丢失了。
print(list(item[1] for item in pkgutil.iter_modules()))