将文件夹添加到系统路径以访问其他模块是一个肮脏的黑客?

时间:2017-07-28 03:59:52

标签: python python-3.x module

我在目录中有一个command.py模块,其中包含带有我脚本的子目录。我不想在包含我的脚本的每个文件夹中复制它。这是不好的做法吗?

import sys
sys.path.append("..")  # add previous folder for run script
sys.path.append(".")  # add current folder if I run script in folder, that contain commands.py
from commands import *

抱歉英语不好。

1 个答案:

答案 0 :(得分:2)

当前文件夹始终是sys.path中的第一个条目(来自Python的路径制作视角'' == '.'),因此在第二种情况下添加它是没有意义的。

第一种情况更有问题 - 首先,当前路径应始终是第一个条目,因此如果您坚持向sys.path添加文件夹,至少要将它们插入索引1+,甚至更好的是,将您的路径追加到sys.path的末尾,以确保可以从其预期位置访问所有内置和当前文件夹可见模块。

最后,由于不同部分以不同方式使用sys.path作为搜索路径这一事实,设置相对路径确实不是一个好主意。如果要对父路径进行硬编码,请使用os.path.realpath("..")

之类的内容

这一切都假设没有别的办法 - 我仍然会敦促你重新考虑你的设计,避免完全搞乱搜索路径。