Вот как выглядит моя файловая структура
assignment
|
|__ qn1
| |__ qn1.py
|
|__ qn1
|__ qn2.py
Это упрощенное содержимое qn1.py
class A:
def __init__(self):
pass
def method(self):
pass
Это упрощенное содержимое qn2.py
from qn1.qn1 import A
Это отлично работает в pycharm, но я не могу заставить его работать в vscode, и я получаю это сообщение об ошибке
ModuleNotFoundError: нет модуля с именем «qn1»
Я также пытался использовать эти строки импорта
from ..qn1.qn1 import A
from ..qn1 import qn1; qn1.A
но я получаю эту ошибку для обоих
ImportError: попытка относительного импорта без известного родительского пакета
Я также пытался добавить
__init__.py
в каталог qn1, но это не помогло.
Не использовать vscode не вариант, так как школа требует, чтобы я отправил его через онлайн-редактор vscode.
это должно работать:
import sys
sys.path.append("path to qn1")
import qn1
загляните на этот веб-сайт для получения дополнительных рекомендаций: https://linuxhint.com/sys-path-append-python/ По сути, sys.path.append добавляет каталог, в котором python ищет библиотеки (именно так будет обрабатываться qn1).
какую IDE вы используете - это github.dev?
Я использую vocareum labs через веб-сайт моей школы
К сожалению, это платное ПО, проверить не могу. Я бы подумал о проверке их документов или их эквивалентов, потому что я думаю, что это проблема с их виртуальной машиной, как предполагается в вашем коде.
Я так и сделаю, большое спасибо за помощь!
Оказывается, я использовал неправильный путь в vocareum labs, поскольку я скопировал путь из терминала, который был «labsuser@desktop:~/Submission/qn1», но запуск «pwd» в терминале дал мне фактический рабочий путь, который сделал ваш решение работает для меня. Спасибо!
Спасибо за ответ. Это сработало с vscode на моей машине, но поскольку мне нужно отправить код через онлайн-версию vscode(VM), я не могу использовать абсолютный путь. Знаете ли вы какие-либо другие решения?