У меня проблема с запуском моего скрипта в командной строке, несмотря на то, что он работает в PyCharm.У меня есть структура папок как таковая:
MyCode # PyCharm project folder
/UsefulFunctions
/Messaging
/Texter.py
/DiscordBot
/DiscordBot.py
В DiscordBot.py У меня есть импорт
from UsefulFunctions.Messaging import Texter
Это работает, когда я запускаю его из PyCharm без проблем.Однако, когда я пытаюсь запустить из командной строки, расположенной на уровне DiscordBot
, он выдает следующее сообщение:
ImportError: Нет модуля с именем 'UsefulFunctions'
Естественно, ядумал, что это означает, что папка UsefulFunctions
не на моем пути.Поэтому я вошел в свои переменные окружения и добавил его в свою переменную PATH
(а также в папку MyCode
, если хотите).Тем не менее он столкнулся с этой ошибкой.Я просмотрел здесь несколько сообщений об импорте (в основном Импорт файлов из другой папки ), и они рекомендуют сделать что-то вроде:
import sys
sys.path.insert(0, '/path/to/application/app/folder')
import file
Или добавить __init__.py
файлы в каждую папку, чтобызаставить их зарегистрироваться как пакеты.Я пошел дальше и добавил __init__
файлы в каждую папку и подпапку, из которой пытался импортировать, но все еще не смог запустить из командной строки ... Я пропустил решение sys.path.insert()
, потому что не вижу никакой выгоды от этого после уже явнодобавив его в мою PATH
переменную.Другое решение было добавить "."перед импортом, потому что предположительно в противном случае он только ищет PATH в python.Я попытался сделать это следующим образом:
from .UsefulFunctions.Messaging import Texter
ImportError: попытка относительного импорта без известного родительского пакета
И эта ошибка теперь также отображается в PyCharm ...Непонятно, почему мой первоначальный скрипт без сбоев работает на PyCharm, но эта же программа не может найти мой импорт при запуске из приглашения.Кто-нибудь может объяснить, пожалуйста, разницу между PyCharm, запускающим программу, и моей подсказкой?Почему это не будет работать, несмотря на то, что __init__.py
файлы и добавили MyCode
и UsefulFunctions
к моей переменной PATH в Windows?