Python脚本赢得';在主机之外写入时,无法执行
我的最终问题有两个:Python脚本赢得';在主机之外写入时,无法执行,python,linux,ubuntu,Python,Linux,Ubuntu,我的最终问题有两个: 每当我试图通过/foo.py方法执行python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行python foo.py 当我无法使用/foo.py执行python脚本时,我无法使用Apache2/CGI访问它(请注意,如果我在RaspberryPi本身中编写并保存脚本,我可以让它工作,即,当我将它保存到/usr/lib/CGI-bin/时,我可以从web浏览器访问它)(在本例中,我更改foo.py以打印适当的html标题) 在所有情况下,foo.py都是可
/foo.py
方法执行python脚本时,我都会得到一个:没有这样的文件或目录。但是,我可以执行python foo.py
/foo.py
执行python脚本时,我无法使用Apache2/CGI访问它(请注意,如果我在RaspberryPi本身中编写并保存脚本,我可以让它工作,即,当我将它保存到/usr/lib/CGI-bin/时,我可以从web浏览器访问它)(在本例中,我更改foo.py以打印适当的html标题)#!/usr/bin/env python
print("foo")
工作原理:
home/pi
(我使用Samba.smd.config,如下所示)/foo.py
方法执行python脚本时,我都会得到一个:没有这样的文件或目录
。但是,我可以执行python foo.py
/home/pi
/foo.py
方法执行python脚本时,我都会得到一个:没有这样的文件或目录
。但是,我可以执行python foo.py
/home/pi
,并使其可执行(我在pi端再次检查)/foo.py
方法执行python脚本时,我都会得到一个:没有这样的文件或目录
。但是,我可以执行python foo.py
/
Samba配置(smdb.Config)
可能是行尾问题。当您在“另一台计算机”(可能是在Windows上)上创建脚本时,脚本会得到Windows行尾(“\r\n”)。当您尝试在Linux主机上执行它们时,系统无法找到第一行中提到的解释器“/usr/bin/python\r”(很明显) 我建议您通过运行类似于
perl-pi-e's\r\n\n'script.py的东西来过滤掉所有Windows EOL,多亏了PM 2Ring
问题确实在于Windows添加的“不可见”行结尾。解决方案是从[sourceforge]下载(免费)dos2unix/unix2dos文本文件格式转换器.我在命令提示符下执行了\dos2unix.exe foo.py
,而您的Linux系统应该有名为dos2unix
&unix2dos
的命令,可以在DOS和Unix格式之间转换文本文件的行尾;两个程序都可以在任意方向转换(可能是指向同一可执行文件的simlinks)。这很有效。谢谢。我为我的问题添加了一个正式答案。不用担心,JC Lee。我刚才提到了这些程序,因为它们通常安装在Linux系统中,假设它们比user3159253的perl脚本稍微方便。FWIW,使用sed、awk或Python执行与perl脚本相同的操作非常简单。请标记一个的答案已被接受,因此这不再是未解决的问题。谢谢。我必须等待2天才能选择我自己的答案。
[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