2016-06-29 24 views
1

Ich bin ein Python-Paket, das einige Cython-Code enthält. Ich benutze virtualenv. Es kompiliert gut, wenn ichPython setup.py installieren, nicht genügend Speicher in virtualenv

$ source activate 
$ python setup.py build_ext --inplace 

schreiben, aber dann, wenn ich versuche, das Paket zu installieren, es beginnt Speicher, bis mein Computer hängt zu verbrauchen (oder ich töte den Prozess vor). Genauer gesagt, es hängt, wenn ich versuche:

$ python setup.py install 
running install 
running bdist_egg 
running egg_info 
creating ColoredHRG.egg-info 
writing ColoredHRG.egg-info/PKG-INFO 
writing top-level names to ColoredHRG.egg-info/top_level.txt 
writing dependency_links to ColoredHRG.egg-info/dependency_links.txt 
writing manifest file 'ColoredHRG.egg-info/SOURCES.txt 

ich es denke folgende [https://github.com/docker/docker/issues/10025][1] die Ursache des Problems sein kann. Im Wesentlichen in der oben genannten Ausgabe heißt es folgende

Ich kann dieses Problem replizieren. Die obige Auflösung deutet nicht darauf hin, dass Python-Versionen ändern irgendetwas behoben. Es ist das Schreiben von Dateien von Setuptools, die es verursacht, obwohl ich nicht weiß warum. Manchmal hängt es für mich beim Schreiben von dependency_links.txt und manchmal SOURCES.txt. Will sehen, ob ich weiter nachforschen kann.

...

Haha, ok, das Problem ist, dass Sie setup.py sind Aufruf von/und distutils macht einen listdir ('') von dem anrufenden Verzeichnis, so dass ich davon ausgehen, es ist zu Fuß das gesamte Dateisystem. Ich denke, mach das nicht. https://github.com/python/cpython/blob/master/Lib/distutils/filelist.py#L245

Ich habe eine Vorstellung davon, was los ist, aber ich weiß nicht, wie das Problem zu lösen.

Weitere Informationen, die nützlich sein können. Unter dem Inhalt von setup.py

from setuptools import setup 
from Cython.Build import cythonize 

setup(name = 'ColoredHRG' , 
     version = '0.1' , 
     description = 'my package.' , 
     url = 'BLA BLA' , 
     author = 'BLA BLA' , 
     author_email = 'BLA BLA' , 
     license = 'GPL3' , 
     packages = [ 'ColoredHRG' ] , 
     ext_modules = cythonize([ "ColoredHRG/ColoredHRG.pyx" , 
            "ColoredHRG/Pool.pyx" , 
            "ColoredHRG/MC.pyx" , 
            "ColoredHRG/EXAMPLE_traveling_salesman.pyx" , 
            "ColoredHRG/MC_ColoredHRG.pyx" ] , 
            language = 'c++') , 
            zip_safe = False) 

EDIT: falsche Sätze festgelegt.

EDIT: hinzugefügt, um die Flagge cython

Antwort

1

Ich habe endlich das Problem. Die Ordnerstruktur des Pakets ist die folgende

ColoredHRG/setup.py 
... 
ColoredHRG/ColoredHRG/ColoredHRG.pyx 
ColoredHRG/ColoredHRG/MC.pyx 
... 
ColoredHRG/ColoredHRG/examples/examples.py 
... 

Aditionally, in den Ordner examples, gibt es (war) ein Softlink (Ich bin in Linux) auf einen Ordner, der in der Lage

../../DATA 

dh war der Soft-Link

ColoredHRG/ColoredHRG/examples/DATA -> ../../DATA 

Es stellt sich heraus, dass irgendwie diese distutils verursacht in einer Endlosschleife Schleife einzutreten, isst die ganze Erinnerung an meinem Computer und hängt dann.

Ich habe die Soft-Link entfernt und alles funktioniert jetzt.

EDIT: korrigierter Tippfehler.