python setuptools редактируемая установка с параллельной сборкой - PullRequest
0 голосов
/ 19 марта 2020

Я знаю, что здесь и вокруг inte rnet есть несколько вопросов относительно параллельных python сборок с использованием setuptools. Тем не менее, никто не обеспечивает решение. Стоит также упомянуть, что большинству, с чем я сталкиваюсь, больше 5 лет.

Кажется, я могу добиться желаемого распараллеливания во время установки через:

>> python setup.py build -j 4
>> python setup.py install

Но это не работает для редактируемые установки, т.е. для разработки. Редактируемая установка требует вызова python setup.py develop вместо 2 вышеуказанных команд. Однако для develop флаг -j отсутствует. Если я пытаюсь вызвать его после сборки, например,

>> python setup.py build -j 4
>> python setup.py develop

, я получаю сообщение об ошибке:

running develop
running egg_info
creating My_Package.egg-info
writing My_Package.egg-info/PKG-INFO
writing dependency_links to My_Package.egg-info/dependency_links.txt
writing top-level names to My_Package.egg-info/top_level.txt
writing manifest file 'My_Package.egg-info/SOURCES.txt'
reading manifest file 'My_Package.egg-info/SOURCES.txt'
writing manifest file 'My_Package.egg-info/SOURCES.txt'
running build_ext
copying build/lib.linux-x86_64-3.7_my_package_ext/_enums.cpython-37m-x86_64-linux-gnu.so _my_package_ext
error: could not create _my_package_ext/_enums.cpython-37m-x86_64-linux-gnu.so': No such file or directory

Кроме того, рекомендуется для использования pip install -e . --user вместо python setup.py develop в любом случае. Если я пытаюсь вызвать это после параллельной сборки, я получаю:

>> python setup.py build -j 4
>> pip install -e . --user

Running setup.py (path:/package/setup.py) egg_info for package from file:///package
    Running command python setup.py egg_info
    running egg_info
    writing My-Package.egg-info/PKG-INFO
    writing dependency_links to My-Package.egg-info/dependency_links.txt
    writing top-level names to My-Package.egg-info/top_level.txt
    reading manifest file 'My-Package.egg-info/SOURCES.txt'
    writing manifest file 'My-Package.egg-info/SOURCES.txt'
  Source in /package has version 0.0, which satisfies requirement My-Package==0.0 from file:///package
Installing collected packages: My-Package
  Running setup.py develop for My-Package
    Running command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/package/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps --user --prefix=
    running develop
    running egg_info
    writing My-Package.egg-info/PKG-INFO
    writing dependency_links to My-Package.egg-info/dependency_links.txt
    writing top-level names to My-Package.egg-info/top_level.txt
    reading manifest file 'My-Package.egg-info/SOURCES.txt'
    writing manifest file 'My-Package.egg-info/SOURCES.txt'
    running build_ext
    copying build/lib.linux-x86_64-3.6/_my_package_ext/_enums.cpython-36m-x86_64-linux-gnu.so -> _my_package_ext
    error: could not create '_my_package_ext/_enums.cpython-36m-x86_64-linux-gnu.so': No such file or directory
Cleaning up...
Command "/usr/bin/python3 -c "import setuptools, tokenize;__file__='/package/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" develop --no-deps --user --prefix=" failed with error code 1 in /package/

Кто-нибудь знает хороший способ получить параллельную сборку в редактируемой установке? В идеале это были бы формулировки pip install -e ..., но на самом деле все было бы лучше, чем ничего.

...