Обычным примером является настройка вашего проекта следующим образом:
ProjectName/
|-- bin/
| `-- myscript
|-- package_name/
| |-- __init__.py
| |-- rx.py
`-- setup.py
Ваш скрипт установки выглядит следующим образом:
#!/usr/bin/env python
from distutils.core import setup
setup(name='ProjectName',
version='1.0',
description='My project description',
author='Me',
author_email='Me@localhost',
url='http://localhost/',
packages=['package_name'],
)
Когда вы запускаете:
$ python setup.py install
Distutils скопирует каталог вашего пакета в site-packages.
С такой структурой ваш импорт будет выглядеть следующим образом:
from package_name import Rx
print Rx.Factory
То, что вы хотите, звучит так:
import package_name
print package_name.Factory
Для этого вам нужнодобавьте следующее в ваш init .py:
from rx import Factory
Для разработки вы можете символически связать каталог вашего пакета с site-packages, но есть немало других способов добавить код разработки вваш PYTHONPATH без символических ссылок.
Самый простой способ сделать это - просто изменить каталог на каталог вашего проекта (cd ProjectName на основе приведенного выше примера), а затем просто выполнить ваш скрипт оттуда.
Если вам это не нравится, вы можете добавить свой пакет разработки в PYTHONPATH, выполнив что-то вроде:
$ export PYTHONPATH=$PYTHONPATH:/home/me/ProjectName
Еще один способ сделать это - использовать файл * .pth для добавления пакета разработки.на сайт-пакеты, и они все еще живут в вашем домашнем каталоге.Для этого вы просто создадите простой файл с именем что-то вроде myproject.pth, который будет включать:
# pth file for Rx development
/home/me/ProjectName
Приятная вещь в pth-файлах заключается в том, что вы можете перемещать код, переименовывать пакет, добавлятьвторой пакет и т. д., и он все равно будет импортироваться без использования ваших символических ссылок.
Конечно, есть другие опции, такие как манипулирование sys.path в ваших пользовательских файлах запуска, такие инструменты, как virtualenv, buildout и т. д.