2016-03-23 3 views
2

у меня есть простой проект Python с эффективно один пакет (так называемый forcelib), содержащих один модуль (также называемый forcelib):Мой пакет установлен с пип не устанавливать показывает никаких модулей

- setup.py 
- forcelib 
    |- __init__.py 
    |- forcelib.py 

Мой setup.py копируется из official example и имеет очевидные изменения.

Проблема заключается в том, что я могу установить пакет forcelib, используя pip, но когда я импортирую forcelib, он имеет только атрибуты «двойного подчеркивания». То есть, я не вижу модуль forcelib.

Пример для репликации:

  1. git clone https://github.com/blokeley/forcelib
  2. cd forcelib
  3. pip install -e .
  4. python
  5. import forcelib
  6. print(forcelib.__version__) # Правильно печатает 0.1.2
  7. dir(forcelib) # Единственное содержимое: __version__, __path__ и т. Д. Атрибуты двойного подчеркивания. Я ожидал увидеть forcelib, и т.д.

Может быть, я должен distribute just the module, а не возиться с пакетом.

(очень маленький) project is on GitHub.

Любой совет будет очень благодарен.

+0

Где вы ищете модули/содержимое упаковки? – jwodder

+0

'импорт forcelib; DIR (forcelib) '. Там ничего нет, кроме атрибутов double-underscore – blokeley

+0

путем импорта 'forcelib', который вы импортируете forcelib' __init__'. попробуйте 'from forcelib import forcelib; DIR (forcelib) '. –

ответ

0

Кажется, что есть 2 способа сделать это:

  1. Держите ту же структуру каталогов, но поместите в __init__.py

    от импорта .forcelib *

  2. Распределять модуль, а не пакет. Используйте аргумент the instructions to use the py_modules, а не аргумент packages в setup.py. Это означало бы реструктуризацию проект:

    • setup.py
    • forcelib.ру

подход (1) can be seen here. Преимущество заключается в скрытии частных функций и атрибутов (ничего не в __all__), но клиент все еще может видеть модуль forcelib.forcelib, который я не думаю, что он должен.

Подход (2) can be seen here. Это проще, но имеет тот недостаток, что он не скрывает частные функции и атрибуты.

-1

Скачать почтовый файл и распакуйте после того, как перейти к forcelib-мастер каталог затем откройте командную строку и перейдите в forcelib-мастер каталог в командной строке и запустить команду

python setup.py install 

enter image description here

It успешно установит пакеты

Смежные вопросы