运行 Python 脚本放在 PATH (cygwin)
running Python script placed in PATH (cygwin)
我想将我的 Python 脚本放入 PATH 中列出的目录中,只需在 Windows.
上的 cygwin 中的任何位置键入脚本名称即可调用该脚本
我正在使用 shebang
#!/usr/bin/env python
在 Linux 机器上运行完美。
然而,通过从 windows cygwin 调用以下行,我得到一个错误:
$ my_script.py some arguments
C:\app\Python36\python.exe: can't open file '/cygdrive/d/11_scripts/my_script.py': [Errno 2] No such file or directory
问题是因为cygwin扩展了脚本路径,python不理解cygwin挂载驱动器的方式:/cygwin/d/...
当我 运行 具有完整路径(win 格式)或相对路径的脚本时,它可以工作。
$ d:/11_scripts/my_script.py some arguments
您知道任何解决方法吗?这里讨论了类似的问题:
Problems running Python script via Cygwin
但是我想使用路径。
谢谢!
补充:
目前我使用一种 bash 包装脚本,它被放入 PATH:
#!/usr/bin/bash
pypath='/cygdrive/c/app/Python36/python'
$pypath -u 'd:_scripts\my_script.py' $@
你运行宁
C:\app\Python36\python.exe
这是一些本地 Windows Python,并且 不是 来自 Cygwin 的 Python,编译为使用 Cygwin。所以它自然不会知道 Cygwin 路径。
如果您想使用 Cygwin 中的 Python,最好的选择是只使用 Cygwin 附带的 Python。
如果您绝对必须使用来自 Cygwin 的本机 Windows Python(您可以这样做,我偶尔也有理由这样做,例如作为测试代码 运行 on Python for Windows 例如使用 msvcrt 模块)你可以这样做。但是您仍然需要将任何文件系统路径转换为本机 Windows 路径。在 Cygwin 中,您可以使用 cygpath 命令来完成此操作,例如
$ cygpath -w -a /cygdrive/d/whatever
D:\whatever
包装传递给 Python 的任何文件路径,如
$ C:/Python36/python.exe "$(cygpath -w -a /cygdrive/d/whatever)"
如果您需要经常这样做,您可以制作一个包装脚本。
我想将我的 Python 脚本放入 PATH 中列出的目录中,只需在 Windows.
上的 cygwin 中的任何位置键入脚本名称即可调用该脚本我正在使用 shebang
#!/usr/bin/env python
在 Linux 机器上运行完美。
然而,通过从 windows cygwin 调用以下行,我得到一个错误:
$ my_script.py some arguments
C:\app\Python36\python.exe: can't open file '/cygdrive/d/11_scripts/my_script.py': [Errno 2] No such file or directory
问题是因为cygwin扩展了脚本路径,python不理解cygwin挂载驱动器的方式:/cygwin/d/... 当我 运行 具有完整路径(win 格式)或相对路径的脚本时,它可以工作。
$ d:/11_scripts/my_script.py some arguments
您知道任何解决方法吗?这里讨论了类似的问题: Problems running Python script via Cygwin 但是我想使用路径。
谢谢!
补充: 目前我使用一种 bash 包装脚本,它被放入 PATH:
#!/usr/bin/bash
pypath='/cygdrive/c/app/Python36/python'
$pypath -u 'd:_scripts\my_script.py' $@
你运行宁
C:\app\Python36\python.exe
这是一些本地 Windows Python,并且 不是 来自 Cygwin 的 Python,编译为使用 Cygwin。所以它自然不会知道 Cygwin 路径。
如果您想使用 Cygwin 中的 Python,最好的选择是只使用 Cygwin 附带的 Python。
如果您绝对必须使用来自 Cygwin 的本机 Windows Python(您可以这样做,我偶尔也有理由这样做,例如作为测试代码 运行 on Python for Windows 例如使用 msvcrt 模块)你可以这样做。但是您仍然需要将任何文件系统路径转换为本机 Windows 路径。在 Cygwin 中,您可以使用 cygpath 命令来完成此操作,例如
$ cygpath -w -a /cygdrive/d/whatever
D:\whatever
包装传递给 Python 的任何文件路径,如
$ C:/Python36/python.exe "$(cygpath -w -a /cygdrive/d/whatever)"
如果您需要经常这样做,您可以制作一个包装脚本。