Устранение ошибок из-за дублированных программ
Немного предыстории:
Вопрос не связан с установкой django или python Вопрос был связан с двумя двумя установками python3.5.2 в двух разных каталогах, что вызывает противоречивое поведение
Я установил python3.5.2 из моего домашнего каталога из tar. (Я помню с помощью команды atlinstall)
Затем я установил django, используя pip3, выполнив
sudo -H pip3 install django
Установка прошла успешно.
Я также установил numpy, scipy, некоторые другие модули.
Все эти модули доступны, когда я использую python3.5
как команда из командной строки, но я не могу импортировать эти модули при вызове python3
,
И все сторонние программы также используют это python3
В результате я не могу использовать любой графический интерфейс для импорта любого из упомянутых модулей.
Мой вопрос, как я могу заставить другой python3 указывать на то же самое, что и python3.5
в котором установлены все модули.
salman@Skynet ~]$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'django'
>>> exit()
[salman@Skynet ~]$ python3.5
Python 3.5.2 (default, Nov 30 2016, 11:30:08)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>
Работает когда python3.5
используется.
Редактировать: запрошенные выходы
which python3 python3.5
/usr/bin/python3 /usr/local/bin/python3.5
env | grep -i python; for p in $(ls /usr{,/local}/bin/python3*); do echo -- $(ls -l $p); $p -c "import sys; print(sys.path)"; done
-- lrwxrwxrwx 1 root root 9 Mar 23 2016 /usr/bin/python3 -> python3.5 ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] -- -rwxr-xr-x 2 root root 4460336 Nov 18 01:23 /usr/bin/python3.5 ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] -- -rwxr-xr-x 2 root root 4460336 Nov 18 01:23 /usr/bin/python3.5m ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] -- lrwxrwxrwx 1 root root 10 Mar 23 2016 /usr/bin/python3m -> python3.5m ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages'] -- -rwxr-xr-x 2 root root 12170760 Nov 30 11:30 /usr/local/bin/python3.5 ['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/site-packages'] -- -rwxr-xr-x 2 root root 12170760 Nov 30 11:30 /usr/local/bin/python3.5m ['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib- dynload', '/usr/local/lib/python3.5/site-packages'] -- -rwxr-xr-x 1 root root 3080 Nov 30 11:31 /usr/local/bin/python3.5m-config Usage: /usr/local/bin/python3.5m-config --prefix|--exec-prefix|-- includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|-- configdir
Мой последний вопрос будет
как я могу удалить python3.5 из /usr/local/bin без вреда для python3 в /usr/bin
Спасибо всем за то, что прочитали вопрос и ответили.
1 ответ
Одно из решений - хотя его нужно тщательно продумать - это иметь python3
указывает на python3.5
который работает правильно:
sudo mv /usr/bin/python3 /usr/bin/python3_backup
sudo ln -s /usr/local/bin/python3.5 /usr/bin/python3
Обновление: Другой метод
Мой первый ответ был в том случае, если вы были уверены, что вам нужен python3.5 в /usr/local/bin. Если это не так и вы хотите сохранить sytem python 3 при добавлении модулей из вашего /usr/local python3.5, вы можете просто обновить свой PYTHON_PATH
переменная, как показано в вашем bashrc (в соответствии с предоставленными вами результатами):
export PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python3.5:/usr/local/lib/python3.5/plat-linux:/usr/local/lib/python3.5/site-packages