Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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的Bash路径选项卡已完成-m_Python_Bash - Fatal编程技术网

python的Bash路径选项卡已完成-m

python的Bash路径选项卡已完成-m,python,bash,Python,Bash,运行脚本时,通常按如下方式执行: $python path/to/script.py 但是,在运行时,您可以按以下方式运行: $python-m path.to.module 有时从命令行运行模块可能会很烦人,因为分隔符使bash无法完成制表符。是否有一个自定义的制表符完成脚本可以处理这种情况?编写代码来完成这种完成并不像人们想象的那样简单。Python没有内置的机制来“检测所有可导入的东西”,有些模块甚至可以在导入时动态创建!如果某个包使用自定义的find_模块函数,甚至是自定义的sys.

运行脚本时,通常按如下方式执行:

$python path/to/script.py

但是,在运行时,您可以按以下方式运行:

$python-m path.to.module


有时从命令行运行模块可能会很烦人,因为
分隔符使bash无法完成制表符。是否有一个自定义的制表符完成脚本可以处理这种情况?

编写代码来完成这种完成并不像人们想象的那样简单。Python没有内置的机制来“检测所有可导入的东西”,有些模块甚至可以在导入时动态创建!如果某个包使用自定义的
find_模块
函数,甚至是自定义的
sys.meta_路径
,该怎么办?python导入系统是可插入的。。。您可以创建一个包,为您导入的任何名称动态生成一个模块,然后,所有模块名称都变为有效!我看到过一个黑客解决方案,它只是将点变成斜线,猜测
sys.path
,然后搜索.py、.pyc和.so文件,但在许多情况下,这当然是错误的(除了nosklo提到的更复杂的案例外,甚至还有一些基础知识,如在zip和egg档案中找不到东西、2.x Tkinter出错等)。它看起来像。我认为
argcomplete
正在尝试完成
-m模块的参数,而不是
-m
本身,但它可能仍然有相关的代码可以窃取。