我正在Python3中编写一个CGI脚本,它识别出错误的目录

我正在Python3中编写一个CGI脚本,它识别出错误的目录,python,linux,python-3.x,cgi,Python,Linux,Python 3.x,Cgi,我正在Python3中编写CGI脚本,但它引用了错误的目录。为了简单起见,下面的工作 #!/home/linuxbrew/.linuxbrew/bin/python3 print ("Content-type:text/html") print () print ('<html>') print ('<head>') print ('</head>') print ('<body>') p

我正在Python3中编写CGI脚本,但它引用了错误的目录。为了简单起见,下面的工作

#!/home/linuxbrew/.linuxbrew/bin/python3

print ("Content-type:text/html")
print ()                             
print ('<html>')
print ('<head>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word!</h2>')
print ('</body>')
print ('</html>')

知道问题出在哪里吗?如何让CGI使用我想要的目录?谢谢

当您运行CGI脚本时,您运行它的用户与运行服务器的用户相同。例如,这通常是www数据用户。这意味着~被扩展到www数据主目录。如果希望CGI脚本运行特定版本的Python,则应将可执行文件的整个路径放在!之后


我强烈建议您不要试图让Apache或NginX以不同的用户身份运行。这可能会导致意想不到的结果和更多的困难。最好只使用完整路径或依赖环境中已有的内容。

您能否确认运行Apache/NginX/where的用户与拥有~/anaconda3/bin/python的用户相同?实际上,它可能由root用户运行。我想Apache是由root用户运行的,Python目录是一个特定的用户/home/ec2 user/anaconda3/bin/Python。知道最好的解决方案是什么吗?谢谢@cwallenpole!我已经编辑了要使用的设置/usr/bin/python3,但我现在无法导入应该在sys.path中的模块-新问题发布在这里。有没有可能你也能帮上忙呢?同样对于这个问题,如果我输入/home/ec2 user/anaconda3/bin/python3,我仍然会遇到同样的错误如果你使用的是virtualenv,你是否在脚本的开头包含了这个?activator='{path to virtualenv}/bin/activate_this.py';execopenactivator.read,{'''uuuuuuuuu文件':activator}@JonasW。我从www.allen-poole.com转换到allen-poole.com,同时我从WordPress转换到Puput。忘了在我的个人资料中更新。
#!~/anaconda3/bin/python

print ("Content-type:text/html")
print ()                             
print ('<html>')
print ('<head>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word!</h2>')
print ('</body>')
print ('</html>')
which python
~/anaconda3/bin/python