Модуль найден в режиме установки, но не в режиме разработки с помощью 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 , но я ищу более элегантный способ сделать это.

One Solution collect form web for “Модуль найден в режиме установки, но не в режиме разработки с помощью setuptools”

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

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

в

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

в вашем скрипте setup.py .

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

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

  • Как я могу заставить setuptools установить пакет из другого источника, который также доступен на pypi с тем же номером версии?
  • Каковы варианты использования для дистрибутива Python?
  • Как предотвратить установку пакета setuptools как .egg
  • Какой из них наиболее pythonic: установка модулей python через диспетчер пакетов (macports, apt) или через pip / easy_install / setuptools
  • Почему pip устанавливает старую версию моего пакета?
  • Проблемы с установкой пакета из dependency_links
  • «Setup.py upload» не работает с «Ошибка загрузки» (401): вы должны быть идентифицированы для редактирования информации о пакете »
  • python setuptool Как я могу добавить зависимость для libxml2-dev и libxslt1-dev?
  • Python - лучший язык программирования в мире.