我的最终问题是双重的:
./foo.py
方法执行python脚本时,我都会得到: No such file or directory
。但是,我可以执行python foo.py
./foo.py
执行python脚本时我无法使用Apache2 / CGI访问它(请注意,如果我在RaspberryPi中编写并保存脚本,我可以使用它,即,当我将其保存到/ usr / lib / cgi-bin /我可以从Web浏览器访问它(在这种情况下,我更改foo.py以打印相应的html标头))在所有情况下,foo.py都是可执行的,用户所有者是root。
foo.py =
#!/usr/bin/env python
print("foo")
什么有效:
什么行不通(第1部分):
home/pi
(我使用Samba。下面是smd.config)./foo.py
方法执行python脚本时,我都会得到: No such file or directory
。但是,我可以执行python foo.py
什么行不通(第2部分):
/home/pi
./foo.py
方法执行python脚本时,我都会得到: No such file or directory
。但是,我可以执行python foo.py
什么行不通(第3部分):
/home/pi
并使其可执行(我在Pi端仔细检查)./foo.py
方法执行python脚本时,我都会得到: No such file or directory
。但是,我可以执行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
答案 0 :(得分:2)
可能问题在于行尾。当您在“另一台计算机”上创建脚本时(可能是在Windows上),脚本会获得windows line-endings(“\ r \ n”)。当您尝试在Linux主机上执行它们时,系统无法找到第一行中提到的解释器“/ usr / bin / python \ r \ n”(很明显)。
我建议您通过运行类似perl -pi -e 's,\r\n,\n' script.py
答案 1 :(得分:0)
感谢PM 2Ring
问题确实存在于"隐形" Windows添加的行结尾。解决方案是从[sourceforge]下载(免费)dos2unix / unix2dos文本文件格式转换器。我在命令提示符1
中执行了<Path>\dos2unix.exe foo.py