最近在linux centos裏安裝了python3.8,也安裝了sqlalchemy, 如下所示:
[root@localhost Python-3.8.0]# python3
Python 3.8.0 (default, Nov 26 2019, 22:35:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sqlalchemy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sqlalchemy'
>>> quit()
[root@localhost Python-3.8.0]# python3 --version
Python 3.8.0
[root@localhost Python-3.8.0]#
[root@localhost Python-3.8.0]#
[root@localhost Python-3.8.0]# pip3 install SQLAlchemy
Requirement already satisfied: SQLAlchemy in /usr/local/python3/lib/python3.8/site-packages (1.3.11)
[root@localhost Python-3.8.0]# cd /usr/local/python3/lib/python3.8/
這個問題搞了好久,我也去安裝位置看看,都正常,如下:
[root@localhost python3.8]# cd site-packages/
[root@localhost site-packages]# ll
total 20
-rw-r--r--. 1 root root 126 Nov 27 22:05 easy_install.py
drwxr-xr-x. 2 root root 117 Nov 30 07:22 mysqlclient-1.4.6-py3.8.egg-info
drwxr-xr-x. 4 root root 240 Nov 30 07:22 MySQLdb
drwxr-xr-x. 5 root root 95 Nov 29 20:59 pip
drwxr-xr-x. 2 root root 130 Nov 29 20:59 pip-19.3.1.dist-info
drwxr-xr-x. 5 root root 94 Nov 27 22:05 pkg_resources
drwxr-xr-x. 2 root root 123 Nov 30 20:40 __pycache__
-rw-r--r--. 1 root root 119 Nov 30 20:38 README.txt
drwxr-xr-x. 6 root root 4096 Nov 27 22:05 setuptools
drwxr-xr-x. 2 root root 170 Nov 27 22:05 setuptools-41.2.0.dist-info
drwxr-xr-x. 14 root root 4096 Nov 30 07:26 sqlalchemy
drwxr-xr-x. 2 root root 137 Nov 30 07:26 SQLAlchemy-1.3.11-py3.8.egg-info
drwxr-xr-x. 5 root root 4096 Nov 29 21:17 tornado
drwxr-xr-x. 2 root root 117 Nov 29 21:17 tornado-6.0.3-py3.8.egg-info
[root@localhost site-packages]# cd sqlalchemy/
後來懷疑是不是因爲我的系統裏既有python2.7也有python3.8的原因,並且對於python的link目前還是python2.
就試着改爲python3, 如下:
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 7 Nov 27 21:27 python -> python2
lrwxrwxrwx. 1 root root 9 Nov 27 21:27 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Aug 7 08:52 python2.7
lrwxrwxrwx. 1 root root 30 Nov 27 22:07 python3 -> /usr/local/python3/bin/python3
[root@localhost bin]# mv python python.bak
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 9 Nov 27 21:27 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Aug 7 08:52 python2.7
lrwxrwxrwx. 1 root root 30 Nov 27 22:07 python3 -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root 7 Nov 27 21:27 python.bak -> python2
[root@localhost bin]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 30 Nov 30 21:44 python -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root 9 Nov 27 21:27 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Aug 7 08:52 python2.7
lrwxrwxrwx. 1 root root 30 Nov 27 22:07 python3 -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root 7 Nov 27 21:27 python.bak -> python2
但是yum是依賴python2的,所以需要改一下文件,
如下:
[root@localhost bin]# python -V
Python 3.8.0
[root@localhost bin]# vi /usr/bin/yum
[root@localhost bin]# vi /usr/libexec/urlgrabber-ext-down
[root@localhost bin]# vi /usr/bin/yum
[root@localhost bin]# vi /usr/libexec/urlgrabber-ext-down
[root@localhost bin]#
[root@localhost bin]#
[root@localhost bin]# python -V
Python 3.8.0
[root@localhost bin]# python2 -V
Python 2.7.5
[root@localhost bin]# pip3 install sqlalchemy
Requirement already satisfied: sqlalchemy in /usr/local/python3/lib/python3.8/site-packages (1.3.1 1)
[root@localhost bin]# python
Python 3.8.0 (default, Nov 30 2019, 20:37:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> import sys
>>> print(sys.path)
['', '/usr/local/python3/lib/python38.zip', '/usr/local/python3/lib/python3.8', '/usr/local/python 3/lib/python3.8/lib-dynload', '/usr/local/python3/lib/python3.8/site-packages']
如上面紅色字體所示,import成功。
參考博客:https://www.cnblogs.com/JahanGu/p/7452527.html