Установите библиотеку SWIGged Python в dist-packages / myfoo.py, а не в dist-packages / myfoo / myfoo.py

У меня есть структура каталогов, как

 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 правильно.

Есть намеки?

0

Решение

Удаление

packages=['myfoo'],

и добавление

py_modules = ['myfoo'],
package_dir = {'' : 'myfoo'}

в setup.py делает трюк.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector