这是一个简单的Cython包:
foo/
__init__.py # Contains: from . import foo
foo.pyx
我使用waf
(我知道pyximport
或setup.py
也可以使用)来构建来自foo.pyx
的Python扩展程序:
foo/
__init__.py # Contains: from . import foo
foo.pyx
build/
foo/
foo.cpython-35m-x86_64-linux-gnu.so
我想导入foo
包而不安装它(开发模式)。
如果Python扩展名在__init___
旁边,就像这样:
foo/
__init__.py # Contains: from . import foo
foo.cpython-35m-x86_64-linux-gnu.so
它可以工作,但__init__.py
位于源目录中,而.so
文件位于构建目录中。
我想避免在源目录中复制.so
文件。
解决方案是在foo/__init__.py
中复制(使用waf)build/foo/__init__.py
,然后在foo
中导入build/
包。
还有其他选择吗?
源代码为here。