【问题标题】:Run python script from another directory从另一个目录运行 python 脚本
【发布时间】:2018-12-19 10:40:04
【问题描述】:

我不知道这个我觉得有点傻,但是我今天尝试做它,当它不起作用时感到惊讶......

我有一个目录C:\test 有一个演示脚本,我们称之为demo.py

  1. 如果我在C:\test,那么我可以做python demo.py。轻松
  2. 我也可以使用相对路径,所以从C:\,它是python test\demo.py

如果 C:\test 在路径上怎么办?

我期待现在能够在 任何地方 执行 python demo.py 但是......

python: can't open file 'demo.py': [Errno 2] No such file or directory

我觉得自己很愚蠢,因为我认为这很简单,但我四处寻找并没有找到解决方案。我是否从根本上误解了 Python 解释器如何找到要运行的脚本?我不认为这与 PYTHONPATH 有任何关系,因为我理解这与在脚本中加载模块有关。

顺便说一下,这是在 Windows 7 上。

【问题讨论】:

  • PATH 环境变量包含可以找到程序的所有目录,而不是输入文件。这似乎是你的误解。
  • 解释器不会在PATH 中搜索脚本。您必须直接运行脚本。确保正确配置 .py 文件关联以使用“Python.File”程序。如果您想省略文件扩展名(即运行demo),请将.PY 添加到PATHEXT 环境变量中。 shell 会将脚本的完全限定路径和命令行参数传递给ShellExecuteEx 函数,该函数将根据.py 文件关联(例如"C:\Windows\py.exe" "%1" %*)查找模板命令并将这些值插入到分别为"%1"%*

标签: python windows


【解决方案1】:

PATH 仅用于搜索命令。第一种方法是可以直接将 Python 脚本用作命令,在这种情况下将使用 PATH:只需使用 demo.py 而不是 python demo.py

它将依赖于操作系统特定的方式。在 Windows 上,文件类型(由扩展名给出 - 这里是 .py)可以被赋予默认应用程序来处理它们,而在类 Unix 上,脚本的第一行可以声明将处理它的程序。

另外,python 允许启动一个 模块,该模块将在 PYTHONPATH(not PATH)中使用 python -m module 或 Windows py -m module 进行搜索。

【讨论】:

  • 谢谢,得到了我的支持,我可以使用这是一种解决方法,但从 Windows CMD 的角度来看,它相当烦人,我们不想依赖与给定脚本相关联的脚本python解释器的版本,就目前而言,我必须复制到多个位置并调用给定的可执行文件,或者我必须将它们命名为.py并在运行时更改可执行关联以确保调用正确的解释器,而事实上我们还希望能够将不以 .py 结尾的脚本作为 python 执行。
猜你喜欢
  • 2015-07-27
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2016-12-08
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多