Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Ubuntu 在终端中执行python代码_Ubuntu_Python 3.x_Terminal - Fatal编程技术网

Ubuntu 在终端中执行python代码

Ubuntu 在终端中执行python代码,ubuntu,python-3.x,terminal,Ubuntu,Python 3.x,Terminal,我是python的初学者,这里有一个问题一直困扰着我。 例如,一个非常简单的代码: a = int (input (' please a number ')) if a <0: a = 0 print ('change to zero') elif a == 0: print ('zero') elif a == 1: print ('one') else: print ('more') 这也发生在ubuntu中,我试图添加 #!/usr

我是python的初学者,这里有一个问题一直困扰着我。 例如,一个非常简单的代码:

a = int (input (' please a number '))
if a <0:
     a = 0
     print ('change to zero')
elif a == 0:
     print ('zero')
elif a == 1:
     print ('one')
else:
     print ('more')
这也发生在ubuntu中,我试图添加

#!/usr/bin/python
在第一行,它仍然不起作用


因此,请帮助我解决我的问题,一直困扰着我。

如果您希望能够从命令行(
/scriptname.py
)运行脚本,而不必键入
python3 scriptname.py
,那么您需要使用
chmod+x filename.py
使文件可执行,并添加一个shebang(
#!/usr/bin/env python3
)作为脚本的第一行。这需要为您编写的每个新脚本完成,但一旦为某个文件完成,就不需要为同一个文件再次执行。当然,您也可以习惯于编写
python3 scriptname.py


需要明确的是(从评论中的讨论中)-在标准的香草Ubuntu系统上,
/usr/bin/python
应该指向Python2,仅仅从命令行运行
python
可能会调用Python2Python3,这取决于环境的设置方式(非系统Python安装在
/usr/local/bin
、主目录或
/usr/bin
之前路径上的其他位置,运行virtualenv、自定义符号链接等)为了绝对安全,请遵循J.F.Sebastian的建议:如果您的程序在两种语言版本下都能正常运行,请使用
#!/usr/bin/env python
。如果它是Py2特定的,请使用
python2
,如果它是Py3特定的,请使用
python3
,您是否尝试将其作为别名添加到bashrc文件中?我会这样做以允许它的运行方式是./scriptname你让脚本可执行了吗?(
chmod+x testif.py
)这是可行的,但每次我想输入时都需要这样做。/。有什么方法可以让我一次性解决吗?@XiaomingWu:如果你不想让每个脚本都可执行的话(如
chmod+x testif.py
——注意:每个脚本只需执行一次)然后将其作为
python testif.py
python-mtestif
运行,如果testif.py的目录位于
sys.path
(当前目录为).python3 scriptname.py和./scriptname之间有什么区别吗?如果我只写python scriptname.py,这是否意味着它使用的是python 2.7.5而不是python 3.4.1?@XiaomingWu您需要包含文件的全名,包括
.py
,如果存在的话。如果添加python 3 shebang并使文件可执行,那么
/scriptname.py
python3 scriptname.py
(假设您使用的是Python 3)。
Python scriptname.py
将使用Python 2运行它,
python3 scriptname.py
将使用Python 3运行它。假设您使用的是
input()
在上面的示例代码中,您需要使用Python 3运行它以获得所需的结果,因为Py2中的
input()
表示完全不同的含义-在Py2中使用
raw\u input()
input()
在Py3中。
python
可能也指python 3,例如,在活动的virtualenv中。尽管大多数(POSIX)上默认的
python
系统引用Python 2解释器。请参阅,简短版本:如果您的脚本源代码与Python 2和Python 3都兼容,请使用
Python
shebang,否则请显式使用python2或python3。@J.F.Sebastian这是真的,但我怀疑OP使用的是virtualenvs。在Ubuntu上,
/usr/bin/Python
是Py2,而
/usr/bin/python3
是Py3,至少在14.04,所以我试图根据OP的个人情况定制答案和评论。@MattDMo:我们不知道是谁安装了OP的计算机。OP可能不知道
python
命令属于virtualenv。声称
python
意味着
python2
是误导性的。
#!/usr/bin/python