gpt4 book ai didi

在主机外部编写时,Python 脚本不会执行

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:14 25 4
gpt4 key购买 nike

我的最终问题有两个:

  1. 每当我尝试通过./foo.py方法执行Python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行 python foo.py
  2. 当我无法使用 ./foo.py 执行 python 脚本时,我无法使用 Apache2/CGI 访问它(请注意,如果我在 RaspberryPi 本身中编写并保存脚本,我可以让它工作,即,当我将其保存到/usr/lib/cgi-bin/时,我可以从网络浏览器访问它(在这种情况下,我更改 foo.py 以打印适当的 html header ))

在所有情况下,foo.py 都是可执行的,并且用户所有者是 root。

foo.py =

#!/usr/bin/env python

print("foo")

什么有效:

  1. 我在 RaspberryPi(和 Ubuntu)中打开文本编辑器并创建 foo.py(请注意,我使用 RaspberryPi 的 Debian 和蛇形 Ubunutu 14.04 进行交叉引用/故障排除)
  2. 在使其可执行后,我可以使用 ./foo.py 来执行 foo.py。

什么不起作用(第 1 部分):

  1. 我在 Windows8.1 上编写了相同的脚本,并将其保存到文档文件夹中
  2. 我将脚本保存到共享网络驱动器/home/pi(我使用Samba。smd.config如下)
  3. 在 RaspberryPi(或 Ubuntu)上时,我使脚本可执行
  4. 每当我尝试通过./foo.py方法执行Python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行 python foo.py

什么不起作用(第 2 部分):

  1. 我在 Windows8.1 上编写了相同的脚本并将其保存到文档文件夹中
  2. 我打开 FileZilla 并通过 sftp 将脚本发送到 RaspberryPi(和 Ubuntu),目的地为 /home/pi
  3. 每当我尝试通过./foo.py方法执行Python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行 python foo.py

什么不起作用(第 3 部分):

  1. 我在 Windows8.1 上编写了相同的脚本并将其保存到文档文件夹中
  2. 我编写了一个批处理文件,putty 将脚本复制 (pscp.exe) 到目标 /home/pi 并使其可执行(我在 Pi 端仔细检查了这一点)
  3. 每当我尝试通过./foo.py方法执行Python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行 python foo.py

总之,当我在主机本身内工作时,所有脚本都会愉快地执行。但是,当我想在 Windows8.1 上工作并通过我所说的 3 种方法发送时,脚本会生气并且不会使用 ./

执行

Samba 配置(smdb.config)

[homes]
comment = Home Directories
browseable = yes
create mask = 0777
directory mask = 0777
valid users = %S

[SnoopPi]
comment= Pi Home
path = /home/pi
browseable=yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
read only=no
force user=root

最佳答案

问题可能出在行结束处。当您在“另一台计算机”(可能是在 Windows 上)上创建脚本时,脚本会获得 Windows 行结尾(“\r\n”)。当您尝试在 Linux 主机上执行它们时,系统无法找到第一行中提到的解释器“/usr/bin/python\r”(很明显)。

我建议您通过运行类似 perl -pi -e 's,\r\n,\n' script.py 来过滤掉所有 Windows EOL。

关于在主机外部编写时,Python 脚本不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com