Подтвердить что ты не робот

Идеальный способ создания библиотеки "Python"

Я хочу создать "библиотеку" модулей Python, с которыми я смогу получить доступ из нескольких отдельных папок проекта.

Например, я хочу, чтобы скрипты Python в/proj1/и/proj2/имели доступ к /lib/.

/lib/help.py
/lib/more_help.py

/proj1/script.py
/proj1/script2.py

/proj2/this_script.py
/proj2/another_script.py

Мне не нужен ни один каталог со всеми скриптами Python, поскольку это кажется довольно дезорганизованным. Я также определенно не хочу копировать один и тот же /lib/ script в каждый из разных проектов.

Каков идеальный способ справиться с этим в Python? Это добавление к пути Python? Или это еще взломать? Это, похоже, имеет недостаток в том, чтобы сделать файлы менее портативными. Или это этот вопрос/ответ об использовании относительных путей? Или что-то еще?

Я должен добавить, что меня интересует Python 2.x, а не 3.x, если это имеет значение.

4b9b3361

Ответ 1

Поверните lib/ в package, затем поместите его в один из каталогов в sys.path (или добавьте новую запись). Затем вы можете импортировать, например. lib.help в ваши проекты.

Ответ 2

Следуйте стандартным дорогам, которые все берут: сделайте свой код подходящим пакетом Python с надлежащим setup.py. Преимущества: easy_install'able, легко распространяемое, простое создание командной строки script (через точку входа console_scripts) и т.д.

Ответ 3

Я думаю, что лучший инструмент, который вы можете использовать для управления средой вашего проекта, virtualenv. Вы создаете новую виртуальную среду и устанавливаете там свои пакеты, а затем запускаете свой проект с помощью исполняемого файла python, который предоставляет вам virtualenv.

Вероятно, вы должны использовать distutils в своей библиотеке, таким образом, установить его с помощью virtualenv очень просто, потому что virtualenv устанавливает setuptools или распространяет в виртуальной среде, что позволяет вам устанавливать в пакеты виртуальной среды из pypi или из вашего локального машина.

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