У меня была небольшая проблема с импортом сценарий, который был в родительской папке, но мне удалось решить его с помощью:Использование относительных импорта в Python с mutliple родителей и детей папки
import sys
sys.path.append("../")
Мой каталог, как это :
Data
|->->code
|->->script1.py
|->->->->subfolder
|->->->script2.py
Когда я запускаю script2 (который импортирует скрипт1) из каталога подпапки, скрипт работает без проблем. Но если я пытаюсь запустить Скрипт2 из каталога кода с помощью:
:~ ./subfolder/script2.py
Я получаю сообщение об ошибке:
ImportError: No module named script1
Я попытался с помощью относительного импорта, но потому, что мой код не структурирован в упаковках не Работа. Есть ли способ запустить скрипт2 из обоих каталогов (родительский и дочерний) и все еще иметь возможность импортировать скрипт1 каждый раз?
Спасибо заранее, Георги Николов
EDIT: Хорошо, после того, как я прочитал все предложения, я сделал «простой» хак, который довольно некрасиво, на мой взгляд, но работает очень хорошо:
import sys
parent_folder = sys.path[0].split("/subfolder")[0]
sys.path.append(parent_folder)
import script1
Теперь я могу даже назвать Скрипт2 от корня, и он будет управлять импортировать script1
python версия? 2.7 и 3.x имеют разные значения по умолчанию импорта (что меня смущает). но, вообще говоря, если вы хотите повторно использовать код, лучше сделать его пакетом. это облегчает вашу жизнь, а другие хотят ссылаться на вашу работу. – HuStmpHrrr
@HuStmpHrrr Я использую 2.7, и я не могу упаковать код, потому что это будет означать начало всего, что невозможно. Есть ли способ сделать это, не переключаясь на пакеты? –
вам просто нужно обработать проблему 'pwd' или' cwd'. вы просто добавляете '../' путь к файлу. – HuStmpHrrr