LINUX.ORG.RU

Как сделать модуль с не python файлами внутри?

 


1

4

Структура файлов:

root/:
  pkg/:
    __init__.py
    data.txt
    core.py

  test.py

Содержимое файлов:


#__init__.py
#Пустой

#data.txt:
Hello!

#core.py:
def hello():
    datafile = 'data.txt'
    print open(datafile, 'r').read()

#test.py:
from pkg.core import hello
hello()
 

При выполнении test.py будет ошибка:

IOError: [Errno 2] No such file or directory: 'data.txt'
Как правильно указать путь к файлу 'data.txt' в модуле, чтобы при импорте hello из pkg путь к data.txt был всегда правильный?



Последнее исправление: pyro (всего исправлений: 2)

Я давно не делал пакетов для питона и не уверен что distutils ещё не устарели. У меня вот такое:

#!/usr/bin/env python3

from distutils.core import setup
from glob import glob

PREFIX = ...  # тут лучше не хардкодить, а то на лоре зачмырят :)

setup(name='XXX',
      scripts=['my_cool_script.py'],
      ...
      data_files=[
        ('/usr/lib/systemd/system', ['my.service']),
        (PREFIX+'/views', glob('views/*')),
        (PREFIX+'/static', glob('static/*')),
      ]
)

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.