程序包安装时如何处理文件位置和路径?

时间:2019-04-09 20:40:15

标签: python installation

我正在构建第一个Python软件包供客户端使用。最多,我设想用户从GitHub提取代码,然后进行pip安装(pip install .)。该软件包将在Windows环境中使用。约定是什么?放置日志文件的最简单位置是什么?是否有一种方法可以告诉setup.py创建一个易于用户访问的日志目录?

对于一个更具体的示例,假设我在C:\Users\iamuser\projects\client_project上拥有本地代码库。我pip install .client_project目录中。我希望将日志文件放入一个logs\目录(C:\Users\iamuser\projects\client_project\logs)。有没有办法将我的setup.py放置在该目录中的日志文件?如果没有,我还应该尝试其他工具吗?

我尝试过类似this的操作,但是在运行安装程序时获取的所有路径都不是原始setup.py文件的位置(例如:os.path.abspath(__file__)显示的位置不同于{ {1}}目录。

1 个答案:

答案 0 :(得分:0)

在创建Python软件包时,我不会对用户的文件系统或其中的权限做任何假设(理想情况下甚至不会对OS做出假设)。如果您的Python软件包创建了日志文件,则可以使用Python的内置日志记录系统,并且日志记录信息可以存储在用户希望去到的任何地方(默认情况下为stdout和stderr)。

如果您的程序包生成文件,则用户应该可以选择使用设置或配置文件或环境变量来确定文件的位置。

默认情况下,您可以在一些地方安全地存储它们。例如主目录或当前工作目录(或其子文件夹,请参阅注释中的优缺点)。重要的是要使用与脚本的if ( $id == '2781' || $id == '1947' || $id == '516' || $id == '3200' || $id == '237' || $id == '3207' || $id == '3205' || $id == '2647' || $id == '516' || $id = '4571' ) { // Do something } ~os.getcwd()属性相关的相对路径。 Linux系统通常存在一些位置,可以使用__file__/tmp之类的地方,但是在Windows上不起作用。

有时,我将输出文件存储在当前工作目录的父目录中,以免将输出文件检入到Git存储库中,但这会基于其他假设。