当前位置: 首页 > 知识库问答 >
问题:

运行放置在PATH(cygwin)中的Python脚本

皇甫雨华
2023-03-14

我想将我的Python脚本放入PATH中列出的目录中,并通过从Windows上cygwin中的任何位置键入其名称来调用该脚本。

我在用人妖

#!/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

你知道任何解决方法吗?这里讨论了类似的问题:通过Cygwin运行Python脚本的问题,但我想使用PATH。

非常感谢。

另外:目前我使用的bash包装器脚本被放入路径:

#!/usr/bin/bash
pypath='/cygdrive/c/app/Python36/python'

$pypath -u 'd:\11_scripts\my_script.py' $@

共有1个答案

穆德海
2023-03-14

你在跑步

C:\app\Python36\python.exe

它是一些原生的Windows Python,而不是Cygwin的Python,编译后使用Cygwin。所以自然它对Cygwin路径一无所知。

如果您想使用Cygwin中的Python,最好的选择是只使用Cygwin附带的Python。

如果您绝对必须使用Cygwin的原生Windows Python(您可以这样做,我偶尔有理由这样做,例如测试打算在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)"

如果您需要经常这样做,您可以制作一个包装脚本。

 类似资料:
  • 我有一堆shell脚本,以前是在Linux机器上运行的。现在,我们已经切换到Windows,我需要在那里运行这些脚本。我已经安装了Cygwin,但是有没有一种方法可以让脚本使用Cygwin运行,但是调用是从Windows批处理中进行的呢?

  • 问题内容: 我有一个Windows 7系统,上面安装了最新的Java编译器。我也有最新的Cygwin。我想使用Cygwin外壳程序中的Java编译器。我在Cygwin中编辑了PATH变量,如下所示: 我可以在上面的目录中看到二进制文件,但是当我尝试编译我的* .java文件时,我得到了: 在像这样设置PATH变量时我做错了吗?我还需要做其他事情吗?我是Java新手,对cygwin不太熟悉。 问题答

  • 问题内容: 我有一个在Linux上运行的Python(3)脚本,称为主脚本,该脚本必须从专有DLL调用例程。到目前为止,我已经使用Wine使用以下结构解决了这个问题: 脚本 dll_call.py 由Wine下安装的Windows Python(3)解释器执行。它将返回值转储到一个文件中,然后由等待的主脚本拾取该文件。如果我必须连续执行几次,它不是完全可靠且令人痛苦的缓慢。 我想一次启动脚本 dl

  • 问题内容: 我有一个脚本,可以创建网站并动态打印一些数据。-打印的数据应来自另一个python脚本。 我目前面临的问题是,如果我将执行python脚本的行放在执行应用程序的行之前,它将运行Python脚本而不运行;反之亦然。 Python脚本: Flask脚本(注意:价格应为其他脚本的“解析”变量): 问题答案: 使用: 将python脚本(例如)生成的内容包装到函数中。 将其放置在与或相同的目录

  • 问题内容: 我不知道应该把我的Spider代码放在哪里以及如何从main函数中调用它。请帮忙。这是示例代码: 问题答案: 所有其他答案均参考Scrapyv0.x。根据更新的文档,Scrapy 1.0要求:

  • 我有一个PHP脚本位于我的$PATH变量的文件夹中。脚本的第一行如下: 当我在bash中通过提供脚本的路径来执行此脚本时(例如) 或者使用PHP CLI程序执行它: 脚本以预期的输出正常运行。如果我执行以下操作,它也可以正常运行: 但是,如果我尝试在没有PHP CLI程序的情况下运行脚本,并且没有指定脚本的路径,脚本就不会运行。 有人知道为什么吗? 编辑:这是失败的调用: 无论我是否与脚本位于同一