这可能是一个普通的Windows问题,而不是Python问题,我不确定。
我有一个名为GDAL(地理空间库)的python文件夹。 GDAL库的位置存储在Windows系统PATH中,因此当我在Windows命令窗口中键入它以检查PATH是否配置正确时:
gdal_retile.py
我得到记事本打开以显示代码,正如我所料,因为这是此电脑上的.py文件的默认应用程序。
如果我这样做:
python gdal_retile.py
它不起作用,它说
没有这样的文件或目录
然而,如果我定义完整路径:
python "C:\Program Files\GDAL\gdal_retile.py"
工作正常。 PATH不能用作Python解释器参数的一部分吗?
答案 0 :(得分:0)
TL:DR; 否。
PATH
用于搜索您尝试运行的(可执行)文件。如果文件不可执行(例如,文本文件),Windows将尝试查找注册哪个程序来处理文件的扩展名(在您的情况下为记事本)打开该文件,将文件的路径作为参数传递给它。
找到正确的程序后,首先检查以下所有参数,以便将最终%ENVIRONMENT_VARIABLE%
占位符替换为实际值,然后将其视为空格分隔字符串列表并传递给程序启动。然后,程序的任务是弄清楚如何处理它们。 PATH
在论证决议中没有发挥作用。
程序的参数可以是任何东西。想象一下,您要在当前文件夹中传递要创建的文件的文件名。操作系统如何知道您传入的文件名实际上不是PATH
中要搜索的现有文件,而是由程序创建的文件?这就是为什么处理参数的责任完全在于正在启动的程序。
答案 1 :(得分:0)
Python不会在其参数中考虑系统路径,甚至不考虑PYTHONPATH
......
您可以使用where
来模拟此问题,以便在路径
where gdal_retile.py > %TEMP%\fullp
然后用它来设置变量
set /P C=<%TEMP%\fullpath
然后用完整路径调用python
python "%C%"
(这里where
命令没有错误检查,它可以返回任何内容或多于1个路径,因此该解决方案可以完成但是方便启动另一个解释器而不是与{相关联的解释器{1}} Windows上的扩展程序)