Скрипт работает в PyCharm, но не из командной строки
Когда я пытаюсь запустить мою программу из PyCharm IDE, все работает нормально, но если я набираю в Fedora:
python myScript.py
в командной строке я получаю ошибку импорта из 1 модуля.
ImportError : No modue named myDependency
Что делает PyCharm, что позволяет интерпретатору находить мои зависимости при запуске из IDE? Как я могу заставить свой скрипт найти его зависимости, чтобы он мог быть запущен одной командой?
4 ответа
Есть несколько возможных причин, которые могут быть причиной этого:
- Тот же интерпретатор Python? Проверить с
import sys; print(sys.executable)
- Это тот же рабочий каталог? Проверить с
import os; print(os.getcwd())
- Расхождения в
sys.path
, который является списком, который Python последовательно ищет для местоположений импорта, может быть вызвано переменными среды. Проверить сimport sys; print(sys.path)
,
Добавление этого сработало для меня:
from os import sys, path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))
В качестве первого шага в PyCharm перейдите к настройкам проекта / интерпретатору python и отметьте путь. Затем сравните это с результатом which python
- они выстраиваются? Если нет, вам нужно заставить их сделать это.
Если все в порядке, проверьте, что PyCharm определяет как корень вашего проекта в настройках проекта / структуре проекта. Это каталог, в котором находится ваш скрипт? Если нет, вы должны запустить скрипт из этого каталога или добавить каталог в $PYTHONPATH
переменная.
Почти наверняка, это одна из тех двух вещей.
Вы могли бы установить некоторую зависимость проекта в Pycharm для модуля myDependency. Вы можете получить к ним доступ в Fedora, явно импортировав модуль или создав яйцо этого модуля и установив его. Затем он перейдет к сайт-пакетам Python, откуда вы можете ссылаться на эту зависимость.