Python生成文件库

Python生成文件库,python,linux,makefile,Python,Linux,Makefile,虽然听起来可能很琐碎,但我应该如何在Python makefiles中导入库 我正在创建一个基本的Python makefile,例如: all:my_file.py python3 my_file.py 但是,我在my_file.py中使用特定的库,这些库没有包含/导入到基本包中,例如:xlswriter。因此,如果有人试图运行代码,他们必须在终端中键入类似的内容: $ sudo apt-get install python3-xlsxwriter 因此,我的问题是如何调整我的Makefi

虽然听起来可能很琐碎,但我应该如何在Python makefiles中导入库

我正在创建一个基本的Python makefile,例如:

all:my_file.py
python3 my_file.py
但是,我在my_file.py中使用特定的库,这些库没有包含/导入到基本包中,例如:
xlswriter
。因此,如果有人试图运行代码,他们必须在终端中键入类似的内容:

$ sudo apt-get install python3-xlsxwriter
因此,我的问题是如何调整我的Makefile,以便外部用户仅通过
$make
命令运行程序就足够了(并且它会自动继续安装包)。
提前谢谢

一般来说,为用户更改安装是个坏主意。他们的系统是由他们控制的,如果他们决定不想安装额外的软件包,因此无法使用您的脚本,这通常由他们决定

对他们使用
sudo
是一个更糟糕的想法,可能会被检测为攻击。如果你在你的代码和他们的硬盘上犯了一些奇怪的错误怎么办?尊重权限层次结构-全局安装取决于超级用户,本地安装取决于用户,脚本的运行取决于用户,脚本承诺要做的工作完全取决于您-假设满足所有要求(也应列出)

导入本身不是在Makefile中完成的,而是在Python脚本中完成的。这就是我要检测它的地方,并产生错误,通知用户他们需要做什么。所以在你的剧本中,我会说:

try: 
    import xslwriter
    #Add as as many imports as you would like to check for.
except ModuleNotFoundError as e:
    print("-E- Failed to import prerequisite {}. Please install prior to running this script.".format(e.name))
    exit(1)
您还可以
打印安装建议(检测
os
,并决定是建议
yum
还是
apt
(如果是Linux风格而不是Windows),使用始终有效的
pip
,等等)


exit(1)
表示您的程序因错误而停止,并将使Makefile配方失败。通过这种方式,脚本可以正确地发出警告,并作为一个独立的程序运行。

为什么要使用
make
而不是
pip
/
setup.py
?对不起,您可以说得更具体一些吗?pleasePython有自己的工具来正确安装脚本及其依赖项。