Ich möchte meine Anwendung packen, um sie zwischen mehreren Projekten zu teilen. Mein setup.py wie folgt aussieht:Kann mein eigenes Modul, das mit distutils verteilt wird, nicht importieren
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='foo_bar',
version='1.0',
py_modules=['foo_bar'],
install_requires=[
'bitstring==3.1.5',
'pytz==2016.4',
'wheel==0.24.0', ]
)
Dann laufe ich Befehl
python setup.py sdist
die
für mich tar.gz-Datei erstellt Ich habe Probleme mit meinem foo_bar Anwendung. Ich bin es in separate virtualenv über pip Installation
pip install dist/foo_bar.tar.gz
und Ausgabe von pip freeze legt nahe, dass es
installiert istfoo-bar==1.0
bitstring==3.1.5
pytz==2016.4
wheel==0.24.0
Wenn ich versuche, dieses Modul in Python Konsole zu importieren
import foo_bar
Ich bekomme ImportError: No module named 'foo_bar'
Was ich vermisse?
Edit:
Meine Dateistruktur sieht wie folgt aus:
foo_bar
├── dist
│ └── foo_bar-1.0.tar.gz
├── __init__.py
├── MANIFEST
├── bar.py
├── requirements.txt
├── setup.py
Haben Sie auch versucht '' python setup.py install''? Können Sie Ihre Verzeichnisstruktur angeben? Sind Sie in der gleichen Virtualität, wenn Sie versuchen, Ihr Modul zu importieren? Warum benutzt du '' py_modules'' und nicht '' packages''? Es ist viel flexibler ... – ziky
@ziky Ich habe meinen Beitrag aktualisiert, um die Verzeichnisstruktur einzuschließen. Ich benutze separate virtualenv, habe aber foo_bar dort installiert. TBH, ich habe noch nicht von 'Pakete' Option gehört, könnte es anstelle von py_module einen Unterschied machen? – mateuszb
Sie versuchen, '' foo_bar'' zu importieren, jedoch gibt es kein '' foo_bar.py'' in Ihrem Paket! Versuchen Sie, '' bar.py'' in diesen Namen umzubenennen. Allerdings habe ich nie Pakete auf diese Weise verwendet. Normalerweise erstellen Sie ein Paket (Verzeichnis mit '' __init __. Py'' Datei) auf der gleichen Ebene wie '' setup.py'' ist. Das heißt, dass Sie in Ihrem Projekt ein weiteres '' foo_bar''-Verzeichnis erstellen würden und dort würden Sie '' bar.py'' platzieren. Dann würden Sie es importieren wie '' Import foo_bar.bar''. – ziky