Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2013 07:38:19

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

Есть у меня веб-приложение - папка web. И есть у меня скрипты, которые работают по крону, но импортируют некоторые файлы из папки web. Сейчас у меня такая структура:

/web
    /tools
        __init__.py
        some.py
    app.py
/bin
    run.py

и в коде run.py приходится писать:
sys.path.append(os.path.dirname(__file__) + "/../web/")
from tools.some import *

А как-нибудь можно организовать структуру проекта, чтобы sys.path редактировать не приходилось?



Офлайн

#2 Окт. 28, 2013 08:14:21

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

добавить __init__.py в каталог web и

import web.tools.some
или не добавлять если python >= 3.3

Офлайн

#3 Окт. 28, 2013 08:21:17

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

ну и общий для bin и web каталог должен быть в $PYTHONPATH

Офлайн

#4 Окт. 28, 2013 08:31:45

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

sergeek
ну и общий для bin и web каталог должен быть в $PYTHONPATH
Как его туда добавить?



Офлайн

#5 Окт. 28, 2013 08:37:19

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

записать в какой-нибудь .bashrc

export PYTHONPATH=$PYTHONPATH:/home/user/projects/

Офлайн

#6 Ноя. 14, 2013 07:23:57

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Импорт из родительской папки.

Не знаю насколько это правильно, создал скрипт которые создает pth фал, указывающий на нужные мне директории:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
modules = ['web', 'parse_config']
setup_dir = os.path.dirname(os.path.realpath(__file__))
gottlieb_dir = os.path.abspath(setup_dir + '/../')
gottlieb_pth = os.path.join(setup_dir, 'gottlieb.pth')
fl = open(gottlieb_pth, 'w')
for module in modules:
    fl.write(os.path.join(gottlieb_dir, module)+'\n')
fl.close()
from distutils.core import setup
from distutils import sysconfig
site_packages_path = sysconfig.get_python_lib()
setup(
    name = "gottlieb",
    version = "0.1",
    description = "Reconfigure sys.path",
    data_files=[(site_packages_path, ["gottlieb.pth"])]
)
os.remove(gottlieb_pth)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version