我在目录中有一个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 *
抱歉英语不好。
答案 0 :(得分:2)
当前文件夹始终是sys.path
中的第一个条目(来自Python的路径制作视角'' == '.'
),因此在第二种情况下添加它是没有意义的。
第一种情况更有问题 - 首先,当前路径应始终是第一个条目,因此如果您坚持向sys.path
添加文件夹,至少要将它们插入索引1+
,甚至更好的是,将您的路径追加到sys.path
的末尾,以确保可以从其预期位置访问所有内置和当前文件夹可见模块。
最后,由于不同部分以不同方式使用sys.path
作为搜索路径这一事实,设置相对路径确实不是一个好主意。如果要对父路径进行硬编码,请使用os.path.realpath("..")
。
这一切都假设没有别的办法 - 我仍然会敦促你重新考虑你的设计,避免完全搞乱搜索路径。