El módulo de Python no se instalará

Este es mi archivo setup.py

 #!/usr/bin/env python from setuptools import setup from sys import path setup(name= 'conundrum', version= '0.1.0', author= 'elssar', author_email= 'elssar@altrawcode.com', py_modules= ['conundrum'], url= 'https://github.com/elssar/conundrum', license= 'MIT', description= 'A framework agnostic blog generator.', long_description= open(path[0]+'/README.md', 'r').read(), install_requires= [ 'PyYAML >= 3.0.9', 'Markdown >= 2.2.0', 'requests >= 1.0.4', ], ) 

He intentado usar tanto setuptools como distutils , pero esto no instalará mi módulo. En vez de eso, obtengo

 file module.py (for module module) not found 

Esta es mi estructura de directorios

 /module |--/test |--README.md |--license.txt |--module.py |--setup.py 

Para ser claros, el módulo es el directorio raíz.

¿Alguien puede decirme qué estoy haciendo mal?

Esta es la salida cuando bash instalar

 elssar@elssar-laptop:/usr/local/src/conundrum$ sudo python /home/elssar/code/conundrum/setup.py install /usr/lib/python2.6/distutils/dist.py:250: UserWarning: 'licence' distribution option is deprecated; use 'license' warnings.warn(msg) running install running bdist_egg running egg_info writing requirements to conundrum.egg-info/requires.txt writing conundrum.egg-info/PKG-INFO writing top-level names to conundrum.egg-info/top_level.txt writing dependency_links to conundrum.egg-info/dependency_links.txt warning: manifest_maker: standard file 'setup.py' not found file conundrum.py (for module conundrum) not found reading manifest file 'conundrum.egg-info/SOURCES.txt' writing manifest file 'conundrum.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py file conundrum.py (for module conundrum) not found file conundrum.py (for module conundrum) not found warning: install_lib: 'build/lib.linux-x86_64-2.6' does not exist -- no Python modules to install creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/EGG-INFO copying conundrum.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying conundrum.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying conundrum.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying conundrum.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying conundrum.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO zip_safe flag not set; analyzing archive contents... creating 'dist/conundrum-0.1.0-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing conundrum-0.1.0-py2.6.egg removing '/usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg' (and everything under it) creating /usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg Extracting conundrum-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages conundrum 0.1.0 is already the active version in easy-install.pth Installed /usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg Processing dependencies for conundrum==0.1.0 Searching for requests==1.0.4 Best match: requests 1.0.4 Adding requests 1.0.4 to easy-install.pth file Using /usr/local/lib/python2.6/dist-packages Searching for Markdown==2.2.0 Best match: Markdown 2.2.0 Processing Markdown-2.2.0-py2.6.egg Markdown 2.2.0 is already the active version in easy-install.pth Installing markdown_py script to /usr/local/bin Using /usr/local/lib/python2.6/dist-packages/Markdown-2.2.0-py2.6.egg Searching for PyYAML==3.10 Best match: PyYAML 3.10 Adding PyYAML 3.10 to easy-install.pth file Using /usr/local/lib/python2.6/dist-packages Finished processing dependencies for conundrum==0.1.0 

Solo para asegurarme de que mi sistema no fallara, descargué dos paquetes de github con un setup.py similar y los instalé. Instalado sin ningún problema.

No puedo ejecutar setup.py desde un directorio diferente. Debe ejecutarse desde el directorio en el que se encuentra. Ese fue el problema aquí.

Fijo.

Si entiendo su diseño, el problema es que está usando el package_dir predeterminado, lo que significa que los módulos de nivel superior como el module deben estar en el directorio raíz como module.py , no como module/module.py .

Entonces, agregue esto:

 package_dir = {'': 'module'} 

Ahora, buscará module como module/module.py .

(PS, todo esto sería mucho menos confuso para discutir si su módulo, o su subdirectorio, o idealmente ambos, se llamaron algo distinto de “módulo”. Además, si usó un formato más estándar para dibujar su árbol de directorios).

Esto se explica en el Listado de paquetes enteros . (Me doy cuenta de que está listando módulos individuales, no paquetes completos, pero los documentos de esa sección solo dicen “otra vez, puede anular la correspondencia del paquete / directorio usando la opción package_dir”, refiriéndose a la sección que vinculé. Y la referencia para package_dir es incluso menos útil, simplemente dice “Una asignación de paquete a nombres de directorio”.)