最近重新开始写Django,发现以前的代码都启动不了。
开始执行./manage.py runserve
后发现,import django 出错,但是在python 交互式命令行里不报错。
开始猜测是因为本地安装了多个版本的python ,然而 manage.py 里清楚地写着 #!/usr/bin/env python
,应该是3.6版本, 在runtime中执行了 print(sys.version_info[0]
结果也确实是3.6。
后来又重新装了django
pip uninstall django
pip install django
这下更新了django版本, 从2.0 -> 2.1 ,没效果
检查PYTHONPATH 环境变量, 发现为空,但是执行
import sys
for i in sys.path:
print(i)
却得到了很多path.
于是改 ~/.bash_profile
export PYTHONPATH="/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages"
export PATH="$PATH:$PYTHONPATH"
终于导入django不报错了,然而出现了 另外一个错误
importError:dlopen(/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/_mysql.cpython-36m-darwin.so, 2): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/_mysql.cpython-36m-darwin.so
Reason: image not found
估计是库没找到,在/usr/local/opt/mysql/lib/中只找到了 libmysqlclient.21.dylib
于是考虑是最近mysql做了更新,相应的驱动也要更新
pip install mysqlclient -U
可以成功运行了,估计是因为django做了更新之后,老代码都不兼容了