【发布时间】:2017-11-06 03:42:07
【问题描述】:
导入模块的问题/问题在 stackoverflow 中被问了很多,但它们通常充满了多个令人费解的答案。这里有没有大师可以提供一个简短的直接解决方案?
所以我在这里有我的目录结构,没有使用更改sys.path 或使用PYTHONPATH。
我该怎么做
a.允许dir_a和dir_b中的所有文件能够相互导入对方的函数
b. 允许 script_group1 和 script_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