【问题标题】:The simple answer to importing Python modules导入 Python 模块的简单答案
【发布时间】:2017-11-06 03:42:07
【问题描述】:

导入模块的问题/问题在 stackoverflow 中被问了很多,但它们通常充满了多个令人费解的答案。这里有没有大师可以提供一个简短的直接解决方案?

所以我在这里有我的目录结构,没有使用更改sys.path 或使用PYTHONPATH

我该怎么做

a.允许dir_adir_b中的所有文件能够相互导入对方的函数

b. 允许 script_group1script_groupt2 中的所有脚本导入 dir_a 中的任何模块dir_b

my_scripts
  |_ script_group1
    |_ script1.py
    |_ script2.py
  |_ script_group2
    |_ script3.py
    |_ script4.py
my_modules
  |_ dir_a
    |_ file_a.py
    |_ file_b.py
  |_ dir_b
    |_ file_c.py
    |_ file_d.py

编辑: 好吧,等了几天,似乎没有人有好的答案或解释,我决定接受 Python 就是这样的事实。对于我的情况,最简洁的解决方案是编辑 sys.path,但只能在“my_scripts”目录中的 python 文件中。这些将是“顶级”脚本,将在“my_modules”目录中导入公共模块。任何常用功能都只会写入“my_modules”目录中的模块中。 “my_scripts”中不会写通用函数

“my_modules”中模块之间的模块间导入将使用相对导入来完成。而“my_scripts”中的脚本将使用

执行“my_modules”中模块的绝对导入
sys.path.insert(0, path_to_my_modules)

通过这种方式,污染和损害仅限于“my_scripts”中的脚本,而使用 PYTHONPATH 将导致全球系统范围的流行。

【问题讨论】:

  • 简而言之,如果包含您的模块的目录位于 Python 搜索模块的路径中,那么您可以import 一切如您所愿。如果不是这样,有很多方法可以向后弯腰。因此,首先您需要将模块安装到 Python 的路径中或操作路径以使其包含您的模块目录。哪个最好取决于具体情况(本地开发?生产部署?上传到 PYPI?)。

标签: python python-3.x import


【解决方案1】:

编辑: 好吧,等了几天,似乎没有人有好的答案或解释,我决定接受 Python 就是这样的事实。对于我的情况,最简洁的解决方案是编辑 sys.path,但只能在“my_scripts”目录中的 python 文件中。这些将是“顶级”脚本,将在“my_modules”目录中导入公共模块。任何常用功能都只会写在“my_modules”目录下的模块中。 “my_scripts”中不会写通用函数

“my_modules”中模块之间的模块间导入将使用相对导入来完成。而“my_scripts”中的脚本将使用

执行“my_modules”中模块的绝对导入
sys.path.insert(0, path_to_my_modules)

通过这种方式,污染和损害仅限于“my_scripts”中的脚本,而使用 PYTHONPATH 将导致全球系统范围的流行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多