python - 在我的项目`venv`中,`python3 manage.py runserver`会出错,但是如果我使用python3的绝对路径来执行就可以了
问题描述
在我的项目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
但是如果我检查 python3 路径venv
:
(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
invenv
重定向到/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
运行服务器:
(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
在vevn之外:
[root@www myProject]# pip3 freeze | grep -i socketio
python-socketio==1.8.4
编辑-3
在项目之外,我也可以运行服务器。这也是指向的/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
EDIT-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
然后它才能正常工作。
EDIT-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
.
解决方案
推荐阅读
- azure - AADB2C90083:请求缺少必需参数:grant_type
- sql - Oracle 11:加入两个选择
- asp.net-mvc-4 - Visual Studio - 在 MVC 4 中找不到匹配的视图
- typescript - 如何取消 Selenium 中的特定等待?
- python - 删除重复项(python)
- python-3.x - 使用 subprocess.run 将文件从一种类型转换为另一种类型
- vuex - 使用 vuex-persistedstate 和 js-cookie 保存 Vuex 状态
- ubuntu - 是否可以在 linux 终端中使用 say-command 行?(不说话)
- javascript - Stripe - 付款意图(3d 安全问题)
- excel - 运行时工作表粘贴错误:需要对象