我试图找到类似 here 的答案,但它们对我不起作用。
我有一个名为 py36 的 python3.6 环境。如果我conda activate py36
然后用
export FLASK_APP=main.py
flask run --port=5050
我收到以下错误:
Traceback (most recent call last):
File "/Users/USERNAME/anaconda/bin/flask", line 6, in <module>
sys.exit(flask.cli.main())
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 513, in main
cli.main(args=args, prog_name=name)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 380, in main
return AppGroup.main(self, *args, **kwargs)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args[1:], **kwargs)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 423, in run_command
app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 152, in __init__
self._load_unlocked()
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 176, in _load_unlocked
self._app = rv = self.loader()
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 237, in load_app
rv = locate_app(self.app_import_path)
File "/Users/USERNAME/anaconda/lib/python3.5/site-packages/flask/cli.py", line 90, in locate_app
__import__(module)
File "/Users/USERNAME/Documents/Google_Drive/Projects/project/main.py", line 3, in <module>
import MySQLdb
ImportError: No module named 'MySQLdb'
问题不在于没有安装“MySQLdb”,因为它是在那个环境下安装的。
如果我做 conda list
我得到
mysql-connector-c 6.1.11 h42a37c1_0
mysqlclient 1.4.6 py36h0a44026_0
确认mysql安装在这个环境中。
如果我运行 python
我得到
$ python
Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
确认默认 python 是 3.6。
如您所见,一切都应该是 python3.6,但错误来自我的 python 代码,出于某种原因启动了 python3.5 而不是 python3.6。我没有任何前缀或任何标题告诉它应该运行哪个 python。
其实这是我的main.py的最上面
from flask import Flask, request, render_template, jsonify
from flask_cors import CORS
from flask_pymongo import PyMongo
import MySQLdb
import json
import math
import pandas as pd
import numpy as np
from collections import OrderedDict
import pprint
import sys
app = Flask(__name__)
cors = CORS(app, resources={r"/*": {"origins": "*"}})
换句话说,我的 conda 环境本应安全地包含单个 python 版本(python 3.6),却无法不一致地激活正确的 python 版本。
我害怕修改路径,但如果我echo $PATH
>>>echo $PATH
/Users/USERNAME/anaconda/envs/py36/bin:/usr/local/opt/openssl/bin:/usr/local/opt/openssl/bin:/usr/local/opt/openssl/bin:/usr/local/opt/openssl/bin:/usr/local/fsl/bin:/Users/USERNAME/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
我修复它的唯一方法是执行以下操作:
conda activate /Users/USERNAME/anaconda
pip install pymysql
虽然这解决了我的问题,但它是一个创可贴,并没有解决问题。因为基础环境不是我想在conda activate py36
时使用的环境。
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:0)
我的建议是让您重新创建您的虚拟环境。
让我们创建一个全新的虚拟环境(为了好玩,我们称它为 appleslice
):
首先,通过执行 deactivate
确保您当前没有在任何虚拟环境中运行。然后运行这个:
conda create --name appleslice python=3.6
然后执行:activate appleslice
并继续安装所有必需的软件包。
如果仍然卡住,请查看 this article。