我正在编写两个旨在从命令行运行的脚本。我们将它们命名为 foo.py
和 bar.py
。此外,我有一个名为 util 的实用程序模块,它将由这两个脚本共享。如何构建我的代码,以便 foo
和 bar
都可以有像 import util
这样的简单行?目前,我的目录结构是这样的:
MyProject
\--foo
\--foo.py
\--foo_util.py
\--bar
\--bar.py
\--bar_util.py
\--util
\--util.py
在foo
中,我希望能够编写import foo_util
和import util
,但我不希望能够编写import bar
,因为它们是独立的程序,没有理由使用彼此的代码。
更新:切普纳解决方案的稍微修改版本,我发现了一些似乎对我有用的东西。我的项目现在的结构如下:
MyProject
\--__init__.py
\--foo.py
\--bar.py
\--MyProject
\--__init__.py
\--foo
\--__init__.py
\--foo_impl.py
\--bar
\--__init__.py
\--bar_impl.py
\--shared
\--__init__.py
\--util.py
foo.py
可以编写 import MyProject.foo as foo
和 bar.py
可以做类似的事情,并且 foo
和 bar
可以做 import MyProject.shared
最佳答案
我建议使用以下布局:foo.py
和 bar.py
作为脚本,可以放置在任何地方。您应该在已知位置安装以下软件包:
<known location, such as /usr/lib/python/site-packages>
\--foo
\--util.py
\--bar
\--util.py
\--util.py
然后,在必要时使用 import foo.util
、import bar.util
和 import util
访问各个模块。
正如 abarnert 指出的那样,您无法从 foo
中隐藏 bar/util.py
,也不应该关心这样做。
关于python - 如何让两个脚本引用同一个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062101/