Python 将cpp文件添加到setuptools,但不要';不编译
我有一个库,我想发布到pyPI,其中包含python代码和C++代码。特别的是,C++代码通过NIJA加载,使用< /P>Python 将cpp文件添加到setuptools,但不要';不编译,python,pytorch,setuptools,Python,Pytorch,Setuptools,我有一个库,我想发布到pyPI,其中包含python代码和C++代码。特别的是,C++代码通过NIJA加载,使用< /P> from torch.utils.cpp_extension import load lib_dir = os.path.dirname(os.path.realpath(__file__)) backend = load( name="backend", sources=[os.path.join(lib_dir, "backend
from torch.utils.cpp_extension import load
lib_dir = os.path.dirname(os.path.realpath(__file__))
backend = load(
name="backend",
sources=[os.path.join(lib_dir, "backend.cpp")],
verbose=True)
我的布局:
package_name/
package_name/
__init__.py
package.py
backend.cpp
上面的代码位于package.py
的顶部。如果在本地进行测试,它可以完美地工作并动态编译
但是使用pypi打包时,不会添加.cpp
文件。Mysetup.py
:
setup(
name='package_name',
packages=['package_name'],
...)
setup(
name='package_name',
packages=['package_name'],
ext_modules=[CppExtension(
name='backend',
sources=['package_name/backend.cpp']),
],
cmdclass={'build_ext': BuildExtension.with_options(use_ninja=True)},
...
我试过:
- 将
添加为.cpp
。这会导致扩展名
尝试编译setuptools
,我不希望这样,因为它无法工作(缺少标题)backend.cpp
- 通过
添加脚本=
。似乎什么都没做.cpp
编辑文件显示在生成的
.tar.gz
中(在dist/
中)。如果我从pypi下载的话。但是如果我执行pip安装
,它将不会显示在磁盘上:
>tar tvf dist/package_name-0.1.0.tar.gz
...
drwxr-xr-x 0 fabian staff 0 11月14日10:17包裹名称-0.1.0/包裹名称/
-rw-r--r--0 fabian staff 203 11月14日09:36 package\u name-0.1.0/package\u name/\uuuuu init\uuuuu.py
-rw-r--r--0 fabian staff 5569 11月14日09:36 package_name-0.1.0/package_name/package.py
-rw-r--r--0 fabian staff 10101 11月12日14:43 package_name-0.1.0/package_name/backend.cpp
...
>ls/Users/../miniconda3/envs/testing/lib/python3.8/site-packages/package\u name/
__初始值
__pycache__
package.py
编辑2:越来越疯狂了。我试图将以下内容添加到
setup.py
:
setup(
name='package_name',
packages=['package_name'],
...)
setup(
name='package_name',
packages=['package_name'],
ext_modules=[CppExtension(
name='backend',
sources=['package_name/backend.cpp']),
],
cmdclass={'build_ext': BuildExtension.with_options(use_ninja=True)},
...
现在它正在建造中。但是它仍然没有将
.cpp
文件添加到输出中。好的,这是一个相当困难的过程。我不知道是什么使它最终起作用,但以下几点起作用:
find_packages()
(非常确定这不是必需的)。最终setup.py
:注意:在
setup.py
中没有package\u dir
,package\u数据
,数据文件
。没有cpp扩展名
(我们希望动态构建.cpp!)。没有清单。在
中好的,那真是一段旅程。我不知道是什么使它最终起作用,但以下几点起作用:
find_packages()
(非常确定这不是必需的)。最终setup.py
:setup.py
中没有package\u dir
,package\u数据
,数据文件
。没有cpp扩展名
(我们希望动态构建.cpp!)。在中没有清单