Модуль найден в режиме установки, но не в режиме разработки с помощью setuptools

Я использую setuptools впервые и пытаюсь упаковать свой код, чтобы другие могли легко его разрабатывать. Я запускаю все в виртуальной среде.

Короткий вопрос: как изменить каталог, на который указывает ссылка на яйцо, когда я запускаю python setup.py develop?

Длинный вопрос: модуль, который я разрабатываю, называется cops_and_robots. Когда я запускаю python setup.py install, все работает нормально, и я могу импортировать свой модуль cops_and_robots. Однако, когда я запускаю python setup.py develop, запуск import cops_and_robots завершается ошибкой, потому что cops_and_robots.egg-link указывает на неправильный каталог:

(cops_and_robots)Antares:cops_and_robots nick$ cat ~/virtual_environments/cops_and_robots/lib/python2.7/site-packages/cops-and-robots.egg-link 
/Users/nick/Downloads/cops_and_robots/
.

Вот структура каталогов:

|____Downloads
| |____cops_and_robots # the whole package directory
| | |____...
| | |____requirements.txt
| | |____setup.py
| | |____src
| | | |____cops_and_robots # the python package directory
| | | |______init.py__
| | |____...

И мой setup.py:

from setuptools import setup, find_packages
import ez_setup
ez_setup.use_setuptools()

setup(
    # Author information and Metadata
    name='cops_and_robots',

    # Package data
    packages=find_packages('src'),
    package_dir={'cops_and_robots':'src/cops_and_robots'},
    include_package_data=True,
    platforms='any',
    requires=['std_msgs','rospy'],
    tests_require=['pytest'],
    install_requires=[i.strip() for i in open("requirements.txt").readlines()],
)

Ручное исправление состоит в том, чтобы просто добавить src/cops_and_robots к файлу cops_and_robots.egg-link, но я ищу более элегантный способ сделать это.


person Nick Sweet    schedule 09.06.2015    source источник


Ответы (1)


Вероятно, слишком поздно для вашей непосредственной необходимости, но установка setuptools devel уже давно имеет эту проблему. К счастью, есть простой обходной путь, который может сработать в вашем случае. Просто попробуйте изменить:

# Package data
packages=find_packages('src'),
package_dir={'cops_and_robots':'src/cops_and_robots'},

to

# Package data
packages=find_packages('src'),
package_dir={'':'src'},

в вашем сценарии setup.py.

Этот случай должен работать достаточно хорошо с setuptools setup.py devel и, следовательно, с pip install -e.

Дополнительную справочную информацию по этому вопросу см. по следующим ссылкам:

person Jurko Gospodnetić    schedule 02.05.2016