Ich kann mein Paket aus seinem Ordner verwenden, aber sobald ich es als Eipaket installiere, können Cython-basierte Module nicht importiert werden.Paket kann keine Cython-Bibliothek in das Ei importieren
Ich habe folgende Paketstruktur
src/
├── mypkg/
│ ├── __init__.py
│ ├── myfile.py
├── cython/
│ ├── fastcode.pyx
setup.py
Das Modul myfile.py
Einfuhren import fastcode
. In setup.py
habe ich
setup(
name='mypkg',
version='0.1',
packages=find_packages(where="src"),
package_dir={'':'src'},
cmdclass={'build_ext': build_ext},
ext_modules=df_ext_modules,
)
Ich habe auch in setup.cfg
,
[build_ext]
build-lib=src/mypkg
Wenn ich python setup.py install
laufen, wird der cython Code kompiliert und erstellt fastcode.pyd
(oder fastcode.so
in Linux) in mypkg
Ordner entsprechend der Anweisung die Konfigurationsdatei.
Jetzt, wenn ich in den Ordner mypkg
gehe, und python
ausführen, kann ich sicher import mypkg.myfile
tun. Wenn ich jedoch Python aus einem anderen Ordner ausführen (so dass die installierte .egg
Datei verwendet wird) bekomme ich Fehler ImportError: No module named fastcode
.
I
package_data={
'mypkg': ['*.pyd', '*.so']
},
zu setup.py
hinzuzufügen versucht, fügt dieser fastcode.pyd
zum Ei-Datei (durch die entpackte Version zu erkunden), aber immer noch nicht funktioniert für den Import.