Python находит другой файл

Если у меня есть папка с двумя скриптами Python: contants.py и appl.py (внутри папки что-то), и файлы

THEKONST = 5

и

from something.constants import THEKONST

print(THEKONST)

Что мне нужно сделать, чтобы я мог вызвать python something/appl.py и не получить ошибку ModuleNotFoundError: No module named 'something'

Примечание. Я не могу изменять сценарии или то, как они вызывают другие.

Редактировать: Метод Тревора сработал ммм, забавно, тот же код, что и в прошлой ночной попытке, не работает с этим методом....поэтому я все стер и все переделал, но не на vscode, а с помощью Touch и Copy Paste, и теперь это работает.... и Я до сих пор не знаю почему... но, по крайней мере, теперь это работает (пишу это просто на заметку)

Ставьте something..

Klaus D. 08.04.2024 17:29

Или, если something/__init__.py существует и ваш PYTHONPATH включает текущий рабочий каталог, вы можете использовать python -m something.appl

Charles Duffy 08.04.2024 17:30

@КлаусД. В этом и есть загвоздка. Это код, написанный кем-то другим. Я не могу изменить код

KansaiRobot 08.04.2024 17:31

Есть ли в корне файл setup.py или аналогичный? Если это так, вам следует устанавливать приложение (в идеале в виртуальную среду или что-то подобное), а не пытаться запустить его непосредственно из дерева исходного кода. То есть python path/to/script.py обычно является неправильным для вещей, которые являются компонентами более крупных приложений, а не для отдельных сценариев. Однако сейчас в вопросе действительно недостаточно информации, чтобы сказать, как автор развертываемого вами проекта намеревался его использовать.

Charles Duffy 08.04.2024 17:32

Более того, что бы ни существовало setup.py или его эквивалент, часто указывается «точка входа» для всего, что должно быть запущено из CLI, так что процесс установки сам создает исполняемую оболочку, которую вы можете вызвать из командной строки, не помещая python в командную строку. совсем.

Charles Duffy 08.04.2024 17:35

@CharlesDuffy, значит, единственный способ — изменить PYTHONPATH? Завтра попробую, спасибо! (здесь полночь, и я полусонный)

KansaiRobot 08.04.2024 17:35

@KansaiRobot, "единственный путь"? Нет, конечно, это не единственный способ, но вы не предоставляете нам достаточно информации, чтобы знать, необходим ли он, поэтому указать его как необходимый шаг проще всего, если нет более подробной информации. Подход python -m something.appl может работать вообще без каких-либо изменений PYTHONPATH - он определенно будет работать без изменений PYTHONPATH, если вы успешно установите более крупный проект в виртуальную среду, которая активна, когда вы пытаетесь запустить программу.

Charles Duffy 08.04.2024 17:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вам нужно убедиться, что Python может найти модуль «что-то».

Сначала убедитесь, что структура папок правильна. Это должно выглядеть примерно так:

//path_to_your_folder
├── something
    ├── __init__.py
    ├── constants.py
    ├── appl.py

Убедитесь, что init.py присутствует в каталоге Something, чтобы сделать его пакетом Python.

Затем установите переменную среды PYTHONPATH. Это сообщает Python, где искать модули. В своем терминале перейдите в родительский каталог чего-либо и выполните следующее:

export PYTHONPATH=$PYTHONPATH:/path_to_your_folder

Замените «/path_to_your_folder» фактическим путем к каталогу, содержащему папку Something. Эта команда предназначена для Unix-подобных систем (Linux, macOS). Если вы используете Windows, используйте вместо этого команду «set»:

set PYTHONPATH=%PYTHONPATH%;C:\path_to_your_folder

Теперь запустите скрипт. У вас должна быть возможность запустить сценарий из любого места файловой системы, не обнаруживая ошибку ModuleNotFoundError.

python /path_to_your_folder/something/appl.py

Надеюсь это поможет.

после экспорта я получил PYTHONPATH как :/path_to_your_folder с «:» в начале. Но это сработало! (что забавно, потому что вчера в полночь, в полусне, я думал, что это не так...) Спасибо!

KansaiRobot 09.04.2024 02:05

Другие вопросы по теме