在我的项目venv
中,python3 manage.py runserver
会收到错误:
...
sio = socketio.Server(async_mode=async_mode)
AttributeError: module 'socketio' has no attribute 'Server'
但是如果我使用绝对路径python3来执行它就没关系。
# /usr/local/Python3/bin/python3.5 manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
...
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
(27144) wsgi starting up on http://0.0.0.0:8000
但是,如果我检查venv
中的python3路径:
(venv_dist) [root@www lll]# ll /home/ldl/repo/myProject/venv_dist/bin/python3
lrwxrwxrwx. 1 root root 9 5月 9 10:43 /home/ldl/repo/myProject/venv_dist/bin/python3 -> python3.5
(venv_dist) [root@www lll]# ll /home/ldl/repo/myProjecg/venv_dist/bin/python3.5
lrwxrwxrwx. 1 root root 32 5月 9 10:43 /home/ldl/repo/myProject/venv_dist/bin/python3.5 -> /usr/local/Python3/bin/python3.5
您可以看到,python3
中的venv
最后会重定向到/usr/local/Python3/bin/python3.5
。
绝对路径python3
可以执行成功:
/usr/local/Python3/bin/python3.5 manage.py runserver
但是软链接python3
无法成功运行。
python3 manage.py runserver
我的系统是CentOS-7。
修改-1
使用哪个:
which python3
/home/ldl/repo/myProject/venv_dist/bin/python3
使用python
runserver:
(venv_dist) [root@www myProject]# python --version
Python 3.5.2
(venv_dist) [root@www myProject]# python manage.py runserver
出现上限错误。
修改-2
在venv内:
(venv_dist) [root@www myProject]# pip3 freeze | grep -i socketio
python-socketio==1.9.0
socketio==0.0.9
[root@www myProject]# pip3 freeze | grep -i socketio
python-socketio==1.8.4
编辑-3
在项目之外,我也可以运行server。
它也指向/usr/local/Python3/bin/python3
。
[root@www myProject]# python3 manage.py runserver
...
Quit the server with CONTROL-C.
(28747) wsgi starting up on http://0.0.0.0:8000
^C[root@www myProject]# which python3
/usr/bin/python3
[root@www myProject]# ll /usr/bin/python3
lrwxrwxrwx. 1 root root 30 12月 10 14:17 /usr/bin/python3 -> /usr/local/Python3/bin/python3
修改-4
我认为此socketio
包与此问题无关,在我的项目pip3 uninstall socketio
中,此问题仍然存在。
但如果在我的Mac上,如果我在socketio
中卸载venv
,也会遇到问题。
...
sio = socketio.Server(async_mode=async_mode)
AttributeError: module 'socketio' has no attribute 'Server'
在我的Mac中我必须在socketio
中重新安装venv
,然后它才能正常工作。
修改-5
在我的远程CentOS7.2服务器ls
venv_dist
中,有一个软链接lib64
引用lib
。
(venv_dist) [root@www venv_dist]# ls
bin include lib lib64 pip-selfcheck.json pyvenv.cfg
但在我的Mac中,没有lib64
。