У меня есть структура каталогов, как
setup.py
myfoo/
myfoo.i
myfoo.cpp
myfoo.hpp
с 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
myfoo.cpp
#include "myfoo.hpp"
#include <iostream>
int myfoo() {
std::cout << "hey!" << std::endl;
return 42;
}
При беге python setup.py install
пакет правильно собирается и устанавливает файлы
/usr/local/lib/python2.7/dist-packages/
_myfoo.so
myfoo/
myfoo.py
myfoo.pyc
По умолчанию только /usr/local/lib/python2.7/dist-packages/
находится в $PYTHONPATH
, так import myfoo
откуда угодно выдает ошибку импорта. Для того, чтобы работать, либо оба myfoo.py[c]
должен быть в /usr/local/lib/python2.7/dist-packages/
или переименовать в __init__.py
, Кажется, я не звонил setup.py
правильно.
Есть намеки?
Удаление
packages=['myfoo'],
и добавление
py_modules = ['myfoo'],
package_dir = {'' : 'myfoo'}
в setup.py
делает трюк.
Других решений пока нет …