В моем проекте `venv`,` python3 manage.py runserver` получит ошибку, но если я использую абсолютный путь python3 для выполнения, это будет нормально - PullRequest
0 голосов
/ 09 мая 2018

В моем проекте 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 in venv перенаправляет наконец на /usr/local/Python3/bin/python3.5.

абсолютный путь python3 может выполнить успех:

/usr/local/Python3/bin/python3.5 manage.py runserver

но мягкая ссылка python3 не может быть запущена.

python3 manage.py runserver 

Моя система - CentOS-7.


EDIT-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 

там верхняя ошибка.


EDIT-2

внутри венва:

(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

А вне проекта я тоже могу запустить сервер. Это также указывает на /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 не имеет отношения к проблеме, в моем проекте I 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...