递归搜索python脚本

时间:2015-11-17 15:23:02

标签: python linux command-line path

说我有以下树:

~/python
  ├── one
      └── toto.py
  └── two
      └── toto.py

即使在export PATH=$PATH:~/python之后,我似乎也无法从python one/toto.py以外的任何地方投放python two/toto.py~。有没有办法做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过PYTHONPATH代替PATH来实现目标。然后,您可以告诉解释器直接运行模块而不是脚本。例如:

$ export PYTHONPATH=$PYTHONPATH:~/python
$ python -m one.toto
$ python -m two.toto

请注意,我们不包含扩展名,并且分隔符已从/更改为.,因为我们现在处理的是python模块,而不是文件系统路径。

答案 1 :(得分:1)

如评论中所述。

Linux中的

$PATH用于查找可执行文件。在这种情况下,Python 找到此可执行文件后,将执行"在"当前的工作目录并从那里开始工作。

Python获取参数one/toto.py时,它将在您的文件夹和文件后从./开始查看。

您可以创建一个包装器脚本,将其放在/usr/bin/mywrap.py下,将其标记为可执行文件并使用for path in sys.path:并尝试找到您的模块并动态导入它并执行"移交& #34;它。

Python二进制文件中没有任何魔法可以遍历$PATH,因为这是一个shell变量,用于在操作系统中查找二进制文件。与Windows中的PATH非常相似。