Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python setuptools可编辑安装与并行构建_Python_Setuptools - Fatal编程技术网

python setuptools可编辑安装与并行构建

python setuptools可编辑安装与并行构建,python,setuptools,Python,Setuptools,我知道关于使用setuptools的并行python构建,在这里和互联网上都有一些问题。然而,没有一个能提供解决方案。还值得一提的是,我遇到的大多数人都是5岁以上 在安装过程中,我似乎可以通过以下方式实现所需的并行化: >> python setup.py build -j 4 >> python setup.py install 但这不适用于可编辑安装,即用于开发。可编辑安装需要调用python setup.py develope,而不是上述两个命令。但是,开发没有-

我知道关于使用setuptools的并行python构建,在这里和互联网上都有一些问题。然而,没有一个能提供解决方案。还值得一提的是,我遇到的大多数人都是5岁以上

在安装过程中,我似乎可以通过以下方式实现所需的并行化:

>> python setup.py build -j 4
>> python setup.py install
但这不适用于可编辑安装,即用于开发。可编辑安装需要调用
python setup.py develope
,而不是上述两个命令。但是,
开发
没有
-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安装-e--用户
而不是python setup.py开发。如果我尝试在并行构建之后调用它,我会得到:

>> 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安装-e…
公式,但实际上任何东西都比什么都好。

有些相关,也许可以从中获得一些见解:
python setup.py build-j5 develope
应该可以工作,或者添加一个。对于使用
pip
的开发人员安装,
pip安装-可编辑--global option=“build\u ext”--global option=“-j5”
应该可以这样做。@hoefling:任何关于为什么
python setup.py build-j5 develope
的文档都可以,但作为单独的命令来执行却不行?顺便说一句,它对我不起作用——失败了,错误与OP相同。我将看到一个最小的可复制示例
distutils/command/build\u ext.py
只对包中的每个扩展进行并行化,而不是像适当的Makefile那样对构建中的每个源文件进行并行化。