Установленный модуль пуст

Я пытаюсь использовать setuptools для кода Python3. Структура моего проекта:

./testSetup/
./testSetup/testSetup
./testSetup/testSetup/foo.py
./testSetup/Setup.py

./testSetup/testSetup/foo.py content:

def say_foo():
    print('foo')

./testSetup/Setup.py content:

from setuptools import setup, find_packages
import testSetup

setup(
    name='testSetup',
    version='0.0.1',
    packages=find_packages(),
    author='Bastien Sevajol',
    author_email="testSetup@bux.fr",
    description='test',
    long_description='test test',
    include_package_data=False,
    url='http://bux.fr',
    # https://pypi.python.org/pypi?%3Aaction=list_classifiers.
    classifiers=[
        "Programming Language :: Python",
    ]
)

Когда я python Setup.py install (с python3.4) в виртуальной среде:

python Setup.py install
running install
running bdist_egg
running egg_info
creating testSetup.egg-info
writing testSetup.egg-info/PKG-INFO
writing dependency_links to testSetup.egg-info/dependency_links.txt
writing top-level names to testSetup.egg-info/top_level.txt
writing manifest file 'testSetup.egg-info/SOURCES.txt'
reading manifest file 'testSetup.egg-info/SOURCES.txt'
writing manifest file 'testSetup.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-i686/egg
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install

creating build
creating build/bdist.linux-i686
creating build/bdist.linux-i686/egg
creating build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/PKG-INFO -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/SOURCES.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/dependency_links.txt -> build/bdist.linux-i686/egg/EGG-INFO
copying testSetup.egg-info/top_level.txt -> build/bdist.linux-i686/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/testSetup-0.0.1-py3.4.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing testSetup-0.0.1-py3.4.egg
Copying testSetup-0.0.1-py3.4.egg to /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages
Adding testSetup 0.0.1 to easy-install.pth file

Installed /home/bux/.virtualenvs/testsynergine2/lib/python3.4/site-packages/testSetup-0.0.1-py3.4.egg
Processing dependencies for testSetup==0.0.1
Finished processing dependencies for testSetup==0.0.1

Я вижу предупреждение install_lib: 'build/lib' does not exist -- no Python modules to install,

Если я попытаюсь использовать мой модуль:

python               
Python 3.4.0 (default, Apr 11 2014, 13:05:18) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from testSetup import foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'foo'
>>> import testSetup
>>> dir(testSetup)
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

Что не так в моем Setup.py?

2 ответа

Решение

Вам нужно иметь __init__.py файл в вашем TestSetup/ каталог (файл может быть пустым). В противном случае, ничего в этом каталоге не будет импортировано и find_packages() никогда не найду его. Возможно, вы захотите прочитать об этом.

./testSetup/
./testSetup/testSetup
./testSetup/testSetup/__init__.py
./testSetup/testSetup/foo.py
./testSetup/setup.py

Также обратите внимание, что setup.py должно быть все в нижнем регистре. Пока называете это Septup.py не остановит работу скрипта, это не соглашение и не может быть обнаружено различными инструментами.

Это из-за setuptools.find_packagesпри вызове его без каких-либо параметров он ищет пакеты в исходном дереве из местоположения setup.py, В вашем случае у вас нет папки на корневом уровне.

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

testSetup
|--setup.py
|--/testSetup/foo.py
|--/testSetup/__init__.py

тогда вы можете успешно pip setup.py install когда CD внутри testSetup,

некоторые документы по find_packages

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