【问题标题】:How to prevent osx from using python flask 2.7如何防止osx使用python flask 2.7
【发布时间】:2020-05-25 13:37:07
【问题描述】:

为了运行 python3.8 而不是 osx 的默认 2.7,我已将以下别名添加到我的 ~/.bash_profilealias python=/usr/local/bin/python3。所以现在,当我运行python --version 时,我成功地看到我正在运行python 3.8。

问题是,当我运行烧瓶应用程序时,它似乎仍在我的系统中引用 python2.7,如堆栈跟踪中所述:

$ env FLASK_APP=server.py flask run
 * Serving Flask app "server.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Traceback (most recent call last):
  File "/usr/local/bin/flask", line 11, in <module>
    sys.exit(main())
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 966, in main
    cli.main(prog_name="python -m flask" if as_module else None)
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/Library/Python/2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Library/Python/2.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Library/Python/2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 848, in run_command
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 305, in __init__
    self._load_unlocked()
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 330, in _load_unlocked
    self._app = rv = self.loader()
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "/Library/Python/2.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  File "/Users/vismarkjuarez/Documents/Github/Distributed-Systems/app/server.py", line 18
    return f'Welcome to Quiz API v1!'

我是 Python 新手——如何让 python 2.7 停止被引用?

【问题讨论】:

    标签: python python-3.x python-2.7 flask


    【解决方案1】:

    您应该尝试创建一个虚拟环境来检查这是否能解决您的问题

    有很多方法可以实现这一点,但其中大多数包括创建一个 venv -> 激活 venv,然后在 venv 处于活动状态时启动 python 程序

    旁注:像 Pycharm 这样的 IDE 可以配置为使用“配置”对话框自动激活 venv 以运行本地服务器。

    【讨论】:

      【解决方案2】:

      不完全确定您是如何配置配置文件或特定环境变量的,但使用虚拟环境很常见。 venv 内置于 python 中,将为您的项目创建一个包含的“环境”。

      你可以通过调用来创建一个虚拟环境

      $python3 -m venv venv
      

      这将在您必须获取的当前目​​录中创建一个文件夹。

      $ source venv/bin/activate
      

      这应该会更改您的终端线路以显示您在环境中。然后您可以检查以确保您使用的是 python 3。

      $ which python
      >> /<path-to-current-directory>/venv/bin/python
      

      您会注意到您现在需要重新安装所有要使用的软件包。那是因为这一切都是自给自足的。

      $ pip list
      
      Package    Version
      ---------- -------
      pip        19.0.3 
      setuptools 40.8.0 
      

      一旦您的 pip 再次安装所有软件包,并在激活虚拟环境时运行您的代码,所有 python 脚本都将恢复为您创建环境时使用的这个 python 版本。它是专门为这样的时代而创建的。

      因此,如果您想在终端中跟随,您可以执行以下操作。美元符号表示终端的新命令,不需要输入。

      $ python3 -m venv venv
      $ source venv/bin/activate
      $ pip install --upgrade pip
      $ pip install flask==1.1.1
      

      然后我创建了一个名为app.py 的小文件,内容如下

      from flask import Flask
      app = Flask(__name__)
      
      @app.route("/")
      def hello():
          return "Hello World!"
      
      if __name__ == "__main__":
          app.run() 
      

      然后运行

      $ env FLASK_APP=app.py flask run 
      

      在 python3 中启动应用程序

      更改~/.bash_profile 中的别名只会在您个人在终端中键入python 时更改呼叫。它不会改变应用程序和程序搜索 python 的位置。他们使用您的环境变量,当前默认的 python 安装是 python2。您还可以通过使用 shebang 行作为文件的第一行来更改您的 python 脚本查找的解释器

      #!/usr/bin/python3
      

      #!/usr/bin/env python
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-30
        • 2023-03-17
        • 2019-01-31
        • 1970-01-01
        • 2011-08-23
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多