Совместное использование модулей утилит в проектах Python

StackOverflow https://stackoverflow.com/questions/1819326

  •  10-07-2019
  •  | 
  •  

Вопрос

Какова была бы лучшая стратегия структуры каталогов для совместного использования модуля утилит в моих проектах на python? Поскольку общие модули будут обновлены новыми функциями, я бы не хотел помещать их в каталог установки python.

project1/
project2/
sharedUtils/

Из проекта1 я не могу использовать " import .. \ sharedUtils " ;, есть ли другой способ? Я бы не стал жестко кодировать «sharedUtils» место

Заранее спасибо

Это было полезно?

Решение

Сделать отдельный пакет отдельно? И поместить его в / site-packages вашей установки python?

Есть и мой личный фаворит, когда дело доходит до режима разработки: использование символических ссылок и / или *. pth файлов.

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

Предположим, у вас есть sharedUtils / utils_foo и sharedUtils / utils_bar . Вы можете отредактировать PYTHONPATH, включив в него sharedUtils , а затем импортировать их в project1 и project2 , используя

import utils_foo
import utils_bar
etc.

В Linux вы можете редактировать ~ / .profile примерно так:

PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH

Использование переменной окружения PYTHONPATH влияет на каталоги, которые python ищет при поиске модулей. Поскольку каждый пользователь может установить свою PYTHONPATH, это решение подходит для личных проектов.

Если вы хотите, чтобы все пользователи на машине могли импортировать модули в sharedUtils , тогда Вы можете достичь этого, используя файл .pth . То, куда вы поместите файл .pth , может зависеть от вашего дистрибутива Python. Увидеть http: //bob.pythonmac. орг / архив / 2005/02/06 / с использованием-PTH-файлы-для-питон-разработки /

Структура каталогов:

project1/foo.py
sharedUtils/bar.py

Используя каталоги, как вы их показали, из foo.py внутри каталога project1 вы можете добавить относительный путь к sharedUtils следующим образом:

import sys
sys.path.append("../sharedUtils")
import bar

Это позволяет избежать жесткого кодирования пути C: /../ sharedUtils и будет работать до тех пор, пока вы не измените структуру каталогов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top