如何使用python包、模块编写自定义解决方案

2024-05-20 18:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个软件包foobar,它由alice,bob,charles和david组成。在

根据我对Python包和模块的理解,这意味着我将创建一个foobar文件夹,包含以下子目录和文件(如果我错了,请更正)

foobar/
  __init__.py
  alice/alice.py
  bob/bob.py
  charles/charles.py
  david/david.py

该包应该是可执行的,这样除了使模块alice、bob等可用作“库”之外,我还应该能够在如下脚本中使用foobar:

python foobar--args=someargs

问题1:

一个包可以被执行并在上面描述的脚本中使用吗?在

问题2

各个模块将使用我希望重构到公共库中的代码。这是否意味着创建一个新的子目录“foobar/common”并将普通.py在那个文件夹里?在

问题3

foo模块将如何导入公共模块? 是'from foobar import common'还是因为这些模块是包的一部分,所以我不能使用它?在

问题4

我想为在脚本中使用foobar包添加逻辑(假设可以这样做-我只看到过对模块这样做)

使用的代码类似于:

^{pr2}$

我应该把这个逻辑放在哪里(在哪个文件中)?在


Tags: 模块文件代码py脚本文件夹initargs
1条回答
网友
1楼 · 发布于 2024-05-20 18:21:52

Can a package be made executable and used in a script like I described above?

第一季度和第四季度。是的,请将您的:

if __name__ == "__main__":
  dosomething()

foobar/__init__.py

Q2 The various modules will use code that I want to refactor into a common library. Does that mean creating a new sub directory 'foobar/common' and placing common.py in that folder?

不,您必须创建foobar/common.py,而不是{}。所有模块也是如此。因此,正确的结构是:

^{pr2}$

你不想在这个模块里做什么。此外,它根本不起作用,因为如果一个目录中包含__init__.py,那么它就变成了Python包,而您还没有在子目录中创建它们。在

Q3 How will the modules foo import the common module ? Is it from foobar import common

是的。您也可以简单地使用import common,但是如果您的库将用于具有自己的名为common的模块/包的项目中,那么它可能会导致冲突。所以我更喜欢使用完全限定的模块名。在

相关问题 更多 >