ich eine Verzeichnisstruktur wieInstallieren SWIGged Python-Bibliothek in dist-packages/myfoo.py, nicht dist-packages/myfoo/myfoo.py
setup.py
myfoo/
myfoo.i
myfoo.cpp
myfoo.hpp
mit setup.py
,
from distutils.core import setup, Extension
setup(
name='myfoo',
ext_modules=[
Extension(
'_myfoo',
[
'myfoo/myfoo.cpp',
'myfoo/myfoo.i'
],
swig_opts=['-c++'],
)
],
version='0.0.1',
packages=['myfoo'],
requires=[]
)
myfoo.hpp
#ifndef MYFOO_HPP
#define MYFOO_HPP
int myfoo();
#endif // MYFOO_HPP
richtig
myfoo.cpp
#include "myfoo.hpp"
#include <iostream>
int myfoo() {
std::cout << "hey!" << std::endl;
return 42;
}
Wenn python setup.py install
ausgeführt wird, baut das Paket und installiert die Dateien
/usr/local/lib/python2.7/dist-packages/
_myfoo.so
myfoo/
myfoo.py
myfoo.pyc
standardmäßig nur /usr/local/lib/python2.7/dist-packages/
ist in der $PYTHONPATH
, so import myfoo
von überall ergibt sich ein Importfehler. Damit das funktioniert, sollten entweder beide myfoo.py[c]
in /usr/local/lib/python2.7/dist-packages/
sein oder in __init__.py
umbenannt werden. Es scheint, dass ich setup.py
nicht richtig angerufen habe.
Irgendwelche Hinweise?
Statt '' package_dir'' ist es ausreichend 'py_modules' zu verwenden und' build_ext --inplace' hinzuzufügen, wenn 'setup.py' aufgerufen wird –