Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文件夹添加到系统路径以访问其他模块是否是一种恶意攻击?_Python_Python 3.x_Module - Fatal编程技术网

Python 将文件夹添加到系统路径以访问其他模块是否是一种恶意攻击?

Python 将文件夹添加到系统路径以访问其他模块是否是一种恶意攻击?,python,python-3.x,module,Python,Python 3.x,Module,我在包含脚本子目录的目录中有一个commands.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 * 抱歉

我在包含脚本子目录的目录中有一个commands.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 *

抱歉,英语不好。

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

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

最后,由于不同的部分以不同的方式使用
sys.path
作为其搜索路径,因此设置相对路径确实不是一个好主意。如果要硬编码父路径,请使用类似于
os.path.realpath(“…”)


这都是在假设没有其他方法的情况下进行的-我仍然敦促您重新考虑您的设计,避免完全弄乱搜索路径。

当前文件夹始终是
sys.path
中的第一个条目(从Python的路径生成角度来看
'='.
),因此在第二种情况下添加它是毫无意义的

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

最后,由于不同的部分以不同的方式使用
sys.path
作为其搜索路径,因此设置相对路径确实不是一个好主意。如果要硬编码父路径,请使用类似于
os.path.realpath(“…”)


这一切都是在假设没有其他方法的情况下进行的-我仍然敦促您重新考虑您的设计,避免完全弄乱搜索路径。

from..commands import*?Traceback(最后一次调用):File“somefile.py”,第14行,在from..commands import*ValueError中:尝试在顶级包之外进行相对导入ah,确定,因此您不在包的子文件夹中。那就别担心了。:)
from..commands import*
有什么问题?回溯(最近一次调用last):文件“somefile.py”,第14行,from..commands import*ValueError:尝试了超出顶级包的相对导入啊,好的,所以您不在包的子文件夹中。那就别担心了。:)如果我从包含commands.py的父目录启动脚本,它会给出ModuleNotFoundError,而不包含
sys.path.append(“.”)
@EgorEgorov-您能否在问题中添加文件夹结构的ascii树,您从何处运行脚本,以及从何处导入
commands.py
。我想我遗漏了一个谜题。如果我从父目录启动脚本,其中包含commands.py,它会给出ModuleNotFoundError,而不带
sys.path.append(“.”)
@EgorEgorov-您能在问题中添加文件夹结构的ascii树吗,您从何处运行脚本,以及从何处导入
commands.py
。我想我少了一块拼图。