Куда мне положить мои написанные пакеты Python?

Есть ли каноническое место, куда положить самописные пакеты? Мой собственный поиск привел только к сообщению в блоге о том, куда помещать независимые от версии чистые пакеты Python, и к вопросу SO о каноническом расположении под Linux, пока я работаю над Windows.

В моем случае я хотел бы иметь возможность импортировать свои собственные пакеты во время сеанса IPython, как и любой пакет сайта, независимо от того, в каком рабочем каталоге я начал сеанс. В Matlab соответствующая папка, например, просто C:/Users/ojdo/Documents/MATLAB,

import mypackage as mp
mp.awesomefunction()
...

4 ответа

Решение

Благодаря двум дополнительным ссылкам я нашел не только намеченный ответ на мой вопрос, но и решение, которое мне нравится еще больше, и которое - по иронии судьбы - также было объяснено в моем первом результате поиска, но затенено всеми версиями -(в) зависимый сайт-пакет lingo.

Ответ на оригинальный вопрос

Я хотел знать, было ли каноническое (как в "по умолчанию") местоположение для моих самописных пакетов. И это существует:

>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages'

Документы по установке пакета пользовательской схемы заявляют, что эта папка - если она существует - будет автоматически добавлена ​​в sys.path,

Пользовательский каталог для собственных пакетов

  1. Создать каталог где угодно, например C:\Users\ojdo\Documents\Python\Libs,
  2. Добавить файл sitecustomize.py в папку site-packages установки Python, т.е. в C:\Python27\Lib\site-packages (для всех пользователей) или site.USER_SITE (для одного пользователя).
  3. Этот файл затем заполняется следующим кодом:

    import site
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs')
    
  4. Вуаля, новый каталог теперь автоматически добавляется в sys.path в каждой (я) сессии Python.

Как это работает: сайт пакета, который автоматически импортируется при каждом запуске Python, также пытается импортировать пакет sitecustomize для пользовательских модификаций пути пакета. В этом случае этот фиктивный пакет состоит из сценария, который добавляет папку личного пакета в путь Python.

Поместите источник вашего пакета, где вы хотите, но, по крайней мере, дайте вашему пакету минимальный setup.py файл, сразу за пределами пакета:

import setuptools

setuptools.setup(name='mypackage')

Затем установите фальшивый пакет в установочный пакет python site-packages запустив:

python setup.py develop

Это очень похоже на бег python setup.py installкроме egg просто указывает на исходное дерево, так что вам не нужно install после каждого изменения исходного кода.

Наконец, вы сможете импортировать ваш пакет:

python -c "import mypackage as mp; print mp.awesomefunction()"

Я бы использовал схему дома для этого:

http://docs.python.org/2/install/

У меня был тот же вопрос, и ваш ответ очень полезен. Чтобы добавить немного, я наткнулся на этот пример, который мне полезен:

http://python-packaging.readthedocs.io/en/latest/minimal.html

Это минимальный пример того, как упаковать свой собственный код и правильно установить его локально (я полагаю, это то, что вам на самом деле нужно) или распространять в PyPI. Делать вещи по-питонски.

Другие вопросы по тегам