如何在virtualenv中运行python脚本

时间:2018-07-19 19:15:33

标签: python virtualenv

我在“ / home / user1 / public_html / cgi-bin”中有一个hello.py文件,其中显示了python版本:

#!/usr/bin/python

import platform

print "Content-type: text/html\n\n"
print(platform.python_version())

当我转到脚本的URL时,它在浏览器中显示“ 2.6.6”。

我想使用python 3.5,所以我让Webhost在“ / home / user1 / virtualenv / testproject /”中安装了virtualenv

当我尝试将代码的第一行更改为:

#!/home/user1/virtualenv/testproject/3.5/bin/python

import platform

print "Content-type: text/html\n\n"
print(platform.python_version())

该脚本将显示“它有效!Python 3.5.5”,这不是我在脚本中编写的代码。

我应该将hello.py文件放入virtualenv目录吗?还是我有不正确的python 3.5路径?还是我只是完全误解了所有这些工作原理?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

phd的评论是正确的答案。 print是Python 3中的函数,因此必须调用它:print("Content-type: text/html\n\n")。 print-as-operator是Python 3中的SyntaxError。

答案 1 :(得分:-1)

这肯定会解决您的问题

您的代码是正确的,不用担心,因为它将在解释器中提供正确的输出。

发生此问题是因为您在计算机上安装了两个版本的python,并且默认情况下,在环境变量的优先级中设置了python 2的路径。

该脚本会在解释器中提供正确的输出,因为解释器不需要路径的优先级,但是当您从浏览器或命令提示符或控制台运行它时,则需要路径,并且它会从系统环境变量中搜索python的路径。情况下,首先获取python 2的路径,以使其显示python 2的版本

他们将为您的问题提供两种解决方案,您可以做任何人。

  1. 从系统中卸载python 2。这将立即解决您的问题。

  2. 如果要同时保留两个版本的python,则要解决此问题,必须在环境变量的优先级中设置python 3的路径。像这样

在屏幕截图中看到,Python 2的路径在环境变量中位于上方,应该在Python 3的路径下方

See in the Screenshot, Path of Python 2 is Upper in the Environment Variable should be below the Path of Python 3

这是设置路径优先级的正确和静态方法 This is the correct and static way to set the path in priority 谢谢,期待能解决您的问题