Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在EC2实例上使用虚拟环境从浏览器运行Python脚本 太长,读不下去了_Python_Linux_Bash_Amazon Ec2_Amazon Linux - Fatal编程技术网

在EC2实例上使用虚拟环境从浏览器运行Python脚本 太长,读不下去了

在EC2实例上使用虚拟环境从浏览器运行Python脚本 太长,读不下去了,python,linux,bash,amazon-ec2,amazon-linux,Python,Linux,Bash,Amazon Ec2,Amazon Linux,我在我的EC2实例上创建了一个虚拟环境。如何从浏览器访问此文件 大家好, 我在EC2实例上创建了一个虚拟环境来运行一个简单的Python脚本。在终端内,它可以正常工作。但是,我已经制作了一个web应用程序,我希望使用虚拟环境从浏览器激活此脚本。当我尝试此操作时,会出现“权限被拒绝”错误 PHP test.py 错误 我还尝试为所有用户提供执行激活脚本的可能性(/home/ec2 user/venv/python3/bin/activate): chmod 665/home/ec2用户/ven

我在我的EC2实例上创建了一个虚拟环境。如何从浏览器访问此文件


大家好,

我在EC2实例上创建了一个虚拟环境来运行一个简单的Python脚本。在终端内,它可以正常工作。但是,我已经制作了一个web应用程序,我希望使用虚拟环境从浏览器激活此脚本。当我尝试此操作时,会出现“权限被拒绝”错误

PHP test.py 错误
  • 我还尝试为所有用户提供执行激活脚本的可能性(/home/ec2 user/venv/python3/bin/activate):

    chmod 665/home/ec2用户/venv/python3/bin/activate

其结果是:

/home/ec2-user/venv/python3/bin/activate: Permission denied
但是,我仍然得到相同的错误:

source /home/ec2-user/venv/python3/bin/activate
pip install beautifulsoup4
pip install requests
注:
  • 请注意,如果我只导入datetime并注释掉bs4和请求(以及有关BeautifulSoup的所有其他内容),那么脚本工作得很好,因为它不必访问虚拟环境才能拉入包

*

出现此错误是因为您没有将python脚本中使用的库添加到虚拟环境中

在您提到的教程中,仅安装了boto库

您需要安装您使用的库。 从命令行运行此命令:

beautifulsoup4
requests
或者,您可以创建一个文件,并将其命名为例如
/home/ec2 user/requirements.txt,然后列出脚本使用的所有需求:

source /home/ec2-user/venv/python3/bin/activate
pip install -r /home/ec2-user/requirements.txt
然后,您可以使用此文件将所有需求安装到虚拟环境中:

/home/ec2-user/venv/python3/bin/activate
解决了的! 我得到了一些帮助,但是,需要修改一些东西

让我们深入了解一下他的答案:

sudo chown-R您的用户名:您的用户名路径/到/virtualenv/

好的,这很好,但我需要一些信息

对我来说,web应用程序的用户名是webapp

那么,上面有一件事情不是很清楚,那就是路径。因此,我的路径是:

sudo chown -R webapp:webapp /home/ec2-user
如上所述。在这里,您需要将权限更改为
/home/ec2用户
权限更改为
/home/ec2用户/venv

因此,要向我的虚拟环境授予应用程序权限,我需要运行:

sudo chown -R ec2-user:ec2-user /home/ec2-user
这在浏览器中起作用了!然而,这剥夺了我在服务器上使用它的能力。为此,我必须将其切换回:

sudo chmod 711 /home/ec2-user
由于来回切换并不理想,我尝试使用
chmod
来更改权限

现在我拥有读、写和执行权限,而其他人,包括web应用程序,只能执行


现在,它可以很好地与requirements.txt配合使用。我试试看。实际上我已经安装了beautifulsoup4和请求。(这就是为什么它可以在终端中工作。)一个问题是,你为什么要写“源代码”?这是打字错误吗?出于好奇,我尝试了“source-source”,但出现了错误“source:没有这样的文件或目录”。我现在遇到了错误:“警告:目录'/home/webapp/.cache/pip'或其父目录不归当前用户所有或不可写。缓存已被禁用。检查该目录的权限和所有者。如果使用sudo执行pip,您可能需要sudo的-H标志。错误:无法打开需求文件:[Errno 13]权限被拒绝:'/home/ec2 user/requirements.txt''
beautifulsoup4
requests
source /home/ec2-user/venv/python3/bin/activate
pip install -r /home/ec2-user/requirements.txt
/home/ec2-user/venv/python3/bin/activate
sudo chown -R webapp:webapp /home/ec2-user
sudo chown -R ec2-user:ec2-user /home/ec2-user
sudo chmod 711 /home/ec2-user