Python3作为默认python版本

Python3作为默认python版本,python,python-3.x,macos,Python,Python 3.x,Macos,我正在创建一个脚本,它将调用API并返回一些结果。我的电脑上有使用pycharm的脚本,但我遇到了一些问题,但我想首先关注这个问题 1我无法将Python3设置为默认python 我用的是Mac电脑。当我进入终端时,我输入$python-version,它返回python2.7.10 然后输入$alias python=python3,当我运行$python-version时,它返回python 3.7.2 当我使用os模块创建py.script时,它不起作用。请参阅下面的代码 import o

我正在创建一个脚本,它将调用API并返回一些结果。我的电脑上有使用pycharm的脚本,但我遇到了一些问题,但我想首先关注这个问题

1我无法将Python3设置为默认python

我用的是Mac电脑。当我进入终端时,我输入$python-version,它返回python2.7.10

然后输入$alias python=python3,当我运行$python-version时,它返回python 3.7.2

当我使用os模块创建py.script时,它不起作用。请参阅下面的代码

import os
os.system('alias python=python3')
print(os.system('python --version')
它打印2.7.10


我还尝试运行os.system'alias python=python3'

欢迎使用SO!Pycharm需要您指定使用哪个解释器作为默认解释器,因为默认情况下它不会选择系统解释器

因此,如果您想要python3,可以运行哪个python3,并使用该路径作为当前项目的设置。如何逐步做到这一点,请参见:


希望对您有所帮助,如果您需要更多详细信息,请发表评论。

欢迎使用SO!Pycharm需要您指定使用哪个解释器作为默认解释器,因为默认情况下它不会选择系统解释器

因此,如果您想要python3,可以运行哪个python3,并使用该路径作为当前项目的设置。如何逐步做到这一点,请参见:


希望有帮助,如果您需要更多详细信息,请发表评论。

有趣-显然os.system忽略了别名?只是在Linux中进行了检查,得到了相同的结果

尝试系统而不是操作系统:


有趣-显然os.system忽略了别名?只是在Linux中进行了检查,得到了相同的结果

尝试系统而不是操作系统:


这并不奇怪,因为os.system会打开自己的shell,以这种方式运行alias只会影响当前运行的终端。每个对os.system的调用都将在一个单独的shell中

我不确定您的最终目标是什么,但几乎可以肯定的是,您不需要改变python对shell的意义。如果这样做,则必须同时运行这两个命令

import subprocess

cp = subprocess.run("alias python=python3 && /path/to/script")

这并不奇怪,因为os.system会打开自己的shell,以这种方式运行alias只会影响当前运行的终端。每个对os.system的调用都将在一个单独的shell中

我不确定您的最终目标是什么,但几乎可以肯定的是,您不需要改变python对shell的意义。如果这样做,则必须同时运行这两个命令

import subprocess

cp = subprocess.run("alias python=python3 && /path/to/script")

在包括OSX在内的On-nix机器上,更改脚本运行时使用的解释器版本的一种方法是在脚本的第一行添加一个shebang

例如

然后,要运行脚本,请执行以下操作:

~/$ chmod u+x myscript.py
~/$ ./myscript.py 

您只需要第一次运行chmod命令。它使您能够执行该文件。每当您直接运行脚本而不是作为python的参数运行时,您的脚本将使用shebang指定的版本运行

On-nix机器,包括OSX,更改脚本运行时使用的解释器版本的一种方法是在脚本的第一行添加一个shebang

例如

然后,要运行脚本,请执行以下操作:

~/$ chmod u+x myscript.py
~/$ ./myscript.py 

您只需要第一次运行chmod命令。它使您能够执行该文件。每当您直接运行脚本而不是作为python的参数运行时,您的脚本将使用shebang指定的版本运行

不能将Python 3设置为默认的系统Python。这样做可能会以各种方式破坏您的操作系统,因为它有许多依赖于使用Python 2的脚本。为什么不把你的问题改成你想做什么,而不是你想如何实现它。也就是说,为什么您希望Python3成为您的默认设置?我尝试通过Requests模块运行api调用,但是当我运行脚本时,除非通过Pycharm运行请求模块,否则找不到该请求模块。但是,如果我手动打开IDLE并导入请求,它就会工作,我只想将其保存为脚本。下面是导入操作系统导入请求执行操作的代码。当我将其保存为.py并尝试通过Python启动器运行脚本时,我收到一条错误消息,消息是ImportError:没有名为requests的模块您不能将Python 3设置为默认系统Python。这样做可能会以各种方式破坏您的操作系统,因为它有许多依赖于使用Python 2的脚本。为什么不把你的问题改成你想做什么,而不是你想如何实现它。也就是说,为什么您希望Python3成为您的默认设置?我尝试通过Requests模块运行api调用,但是当我运行脚本时,除非通过Pycharm运行请求模块,否则找不到该请求模块。但是,如果我手动打开IDLE并导入请求,它就会工作,我只想将其保存为脚本。下面是导入操作系统导入请求执行操作的代码。当我将其保存为.py并尝试通过Python启动器运行脚本时,我会收到一条错误消息,提示ImportError:没有名为requestsI的模块可以让脚本完全按照我的要求在pycharm上运行,我就是无法获得import
t请求模块在我将其保存为.py时工作,我得到错误ImportError:当我尝试通过Python Launcher运行它时,没有名为requests的模块我可以让脚本完全按照我想要的方式在pycharm上运行,当我将其保存为.py时,我就是无法让导入请求模块工作,我得到一个错误ImportError:没有名为requests的模块当我试图通过Python启动程序运行它时,我想创建一个可供多个用户使用的脚本,它需要通过requests模块运行一个对Postman的API调用。所以,我仍然处于测试阶段。我可以通过PyCharm让脚本在我的机器上运行没有问题,但是当我将它保存为.py并尝试通过Python启动器运行它时,我收到以下错误消息:ImportError:没有名为requests的模块这听起来像是一个完全不同的问题。您可以使用setuptools的entrypoints指令对解决方案进行过度设计,将应用程序构建到一个构建包中,然后将该bdist或wheel文件分发给每个用户。这需要做更多的工作,但它有自己处理所有依赖关系管理的好处。@CaliforniaDataSurfer注意,如果你把/usr/bin/env python3作为Python文件的第一行,它应该可以正常工作/usr/bin/env python3 import requestsNo,将名为shebang的行作为python脚本的第一行。然后在Finder中双击它应该使用python3而不是python。最终,我想创建一个可供多个用户使用的脚本,它需要通过requests模块运行对Postman的API调用。所以,我仍然处于测试阶段。我可以通过PyCharm让脚本在我的机器上运行没有问题,但是当我将它保存为.py并尝试通过Python启动器运行它时,我收到以下错误消息:ImportError:没有名为requests的模块这听起来像是一个完全不同的问题。您可以使用setuptools的entrypoints指令对解决方案进行过度设计,将应用程序构建到一个构建包中,然后将该bdist或wheel文件分发给每个用户。这需要做更多的工作,但它有自己处理所有依赖关系管理的好处。@CaliforniaDataSurfer注意,如果你把/usr/bin/env python3作为Python文件的第一行,它应该可以正常工作/usr/bin/env python3 import requestsNo,将名为shebang的行作为python脚本的第一行。然后从Finder双击它应该使用python3而不是python。通过终端我得到2.7.10,通过空闲我得到3.7.2通过终端我得到2.7.10,通过空闲我得到3.7.2