2015-06-09 4 views
5

Po raz pierwszy używam setuptools i próbuję spakować mój kod, aby inni mogli go łatwo rozwinąć. Używam wszystkiego w środowisku wirtualnym.Moduł znaleziony w trybie instalacji, ale nie w trybie wywoływania za pomocą setuptools

Krótkie pytanie: Jak zmienić katalog, do którego prowadzi odnośnik do jaja, gdy uruchamiam python setup.py develop?

Długie pytanie: Moduł, który rozwijam nazywa się cops_and_robots. Po uruchomieniu python setup.py install wszystko działa poprawnie i mogę zaimportować mój moduł cops_and_robots. Jednak, gdy biegnę python setup.py develop, bieganie import cops_and_robots zawiedzie ponieważ cops_and_robots.egg-link wskazuje na niewłaściwym katalogu:

(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/ 
. 

Oto struktura katalogów:

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

i mój 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()], 
) 

ręczna poprawka polega na dodaniu pliku src/cops_and_robots do pliku cops_and_robots.egg-link, ale szukam więcej elegancji sposób ant to zrobić.

Odpowiedz

5

Prawdopodobnie zbyt późno na twoją natychmiastową potrzebę, ale setuptools devel instalacja ma ten problem przez długi czas. Na szczęście istnieje proste rozwiązanie, które może zadziałać w twoim przypadku. Wystarczy spróbować zmienić:

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

do

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

w skrypcie setup.py.

Ten przypadek powinien dobrze działać z setuptoolssetup.py devel, a tym samym z pip install -e, jak również.

na trochę więcej informacji na ten temat tła, zobacz poniższe linki:

Powiązane problemy