python - 如何让两个脚本引用同一个模块

标签 python python-2.7

我正在编写两个旨在从命令行运行的脚本。我们将它们命名为 foo.pybar.py。此外,我有一个名为 util 的实用程序模块,它将由这两个脚本共享。如何构建我的代码,以便 foobar 都可以有像 import util 这样的简单行?目前,我的目录结构是这样的:

MyProject
\--foo
   \--foo.py
   \--foo_util.py
\--bar
   \--bar.py
   \--bar_util.py
\--util
   \--util.py

foo中,我希望能够编写import foo_utilimport 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 foobar.py 可以做类似的事情,并且 foo bar 可以做 import MyProject.shared

最佳答案

我建议使用以下布局:foo.pybar.py 作为脚本,可以放置在任何地方。您应该在已知位置安装以下软件包:

<known location, such as /usr/lib/python/site-packages>
\--foo
   \--util.py
\--bar
   \--util.py
\--util.py

然后,在必要时使用 import foo.utilimport bar.utilimport util 访问各个模块。

正如 abarnert 指出的那样,您无法从 foo 中隐藏 bar/util.py,也不应该关心这样做。

关于python - 如何让两个脚本引用同一个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062101/

相关文章:

python - Django 如何根据选择字段验证请求的 URL?

python - 从非系统安装的 Python 执行 Python 脚本

Python单元测试: How to temporarily redirect stdout messages to a buffer and to test its content?

python - Python2.7获取pip包

Python 正则表达式 - 删除标点符号但保留 <uk> 原样

Python 请求 : Selecting a form for login

python-2.7 - 计算键字典中元组列表的部分数量

c - 使用Cython作为C包装器

python - 当requirements.txt中提到pip包时,如何通过--no-build-isolation安装它们?

database - 插入列表时python2.7 MySQLdb语法错误