La construction de Python et de plus en plus sur les modules manquants
J'ai un autre thread demandant de l'aide sur manquant "zlib". Avec de belles aider le problème a été résolu (ou presque).
Maintenant, je suis intéressée par la construction Python moi-même (sur Ubuntu 10.10).
Quelques questions importantes ont attiré mon attention:
-
Après la construction de Python (dire 2.7.1), ai-je besoin pour reconstruire Python si j'ai des modules manquants?
-
Est-il un moyen de savoir quels modules seront manquantes avant la construction de Python? Dire sqlite3. J'ai sqlite3 installé pour le système par défaut (Python 2.6.6), et je peux l'importer dans Python 2.6.6 shell. Maintenant, j'utilise pythonbrew de construire 2.7.1, et dans la coque, je ne peut pas importer de sqlite3 parce que _sqlite3 n'est pas disponible. Je suis sûr qu'il y a un peu plus important, il manque un dont j'ai besoin pour le développement futur (comme Django..).
Je suis prêt à apprendre comment construire sans l'aide de pythonbrew.
Merci de partager avec moi votre expérience dans la construction d'une autre version de Python, et comment voulez-vous résoudre le problème des modules manquants? Est-il une solution concrète à la construction de Python?
Je n'ai jamais gêné la construction d'un moi, alors s'il vous plaît garder avec moi. Je commence à réaliser l'importance de l'apprentissage et de la construction d'un moi-même! Merci beaucoup!
MODIFIER
D'abord je vous remercie tous de vos contributions. Ils signifiait beaucoup. J'ai fait le bâtiment.
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _curses _curses_panel
_tkinter bsddb185 bz2
dbm gdbm readline
sunaudiodev _sqlite3
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
J'ai eu sqlite3 et readline loin par
sudo apt-get install libreadline6 libreadline6-dev
sudo apt-get install libsqlite3-dev
J'ai essayé de les importer, mais encore "pas de module xxxx".
À AskUbuntu j'ai effectivement demandé aux gens comment obtenir des commandes précédentes parce que je ne pouvais pas utiliser cette fonctionnalité lorsque je suis en Python 2.7.1 shell. Je crois que c'est en raison de readline.
Readline
J'ai installé Python-2.7.1 dans ce répertoire: /home/jwxie518/python27/
J'ai regardé dans setup.py j'ai trouvé les lignes suivantes:
# The sqlite interface
sqlite_setup_debug = False # verbose debug prints from this script?
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
]
Tous les chemins d'accès indiqués ci-dessus n'existent pas.
Donc je suppose que je dois installer sqlite3 manuellement? J'ai eu une autre référence ici (c'est en Chinois, cependant)
# Download the latest and extract
# Go into the extracted directory
./configure --prefix=/home/jwxie518/python27/python
make && make install
# Then edit python-2.7 's setup.py before rebuild it
# Sample (add these two lines to the end....)
'~/share/software/python/sqlite-3.6.20/include',
'~/share/software/python/sqlite-3.6.20/include/sqlite3',
# Then rebuild python like how we did before
Je suis allé dans mon répertoire où j'ai installé sqlite3. J'ai trouvé include/sqlite3.h seulement. Je suis donc allé en arrière et de vérifier /usr/include/. Je ne peux que trouver sqlite3.h de trop.
Donc ce qui se passe ici? Readline est également non importables.
3ÈME ÉDITION
J'ai commencé à tout, sauf que je n'ai pas réinstaller sqlite3.
# Extract Python-2.7.1
# cd into Python-2.7.1
# ./configure
make >make.out 2>&1
less make.out
faire.est ici: http://pastebin.com/raw.php?i=7k3BfxZQ
Je n'ai toujours pas d'import sqlite3. Je suis donc allé dans setup.py et fait des changements:
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/home/jwxie518/python-mod/include/sqlite',
'/home/jwxie518/python-mod/include/sqlite3',
]
Puis de nouveau, couru tout sur (cette fois j'ai aussi fait faire propre)
De sortie est ici: http://pastebin.com/raw.php?i=8ZKgAcWn
En fonction de la sortie, je ne pense pas que le chemin d'accès personnalisé est inclus.... (pour la production complète, veuillez cliquer sur le lien ci-dessus et de recherche pour sqlite)
build/temp.linux-i686-2.7/home/jwxie518/Python-2.7.1/Modules/_sqlite/util.o
-L/usr/lib -L/usr/local/lib -Wl,-R/usr/lib -lsqlite3 -o construire/lib.linux-i686-2.7/_sqlite3.donc
Je ne peux toujours pas d'import sqlite3.
Merci!
Merci beaucoup, Michael Dillon, de m'aider à sortir. Votre tutoriel est clair et concis.
J'ai résolu le problème dès que j'ai réalisé que chaque fois que j'ai essayé Python-2.7.1, j'étais en fait à l'aide de celle installée par Pythonbrew.
La morale de l'histoire est à lire toutes les erreurs. J'ai négligé les erreurs générées par l'importation de sqlite3. Celle installée par Pythonbrew n'ont pas sqlite3 installé. Le kit de développement pour sqlite3 a été installé après Pythonbrew installé Python-2.7.1
Grâce.
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment construire Python et corriger les éventuelles dépendances. Je suis en supposant que vous voulez que ce Python pour être tout à fait distincte de la version d'Ubuntu est sortie de Python, donc je suis en spécifiant l'option --prefix pour installer tout ça dans /home/python27 en utilisant le standard de Python de mise en page, c'est à dire site-packages au lieu de dist-packages.
L'étape 5 est le plus important. À la fin, il affichera une liste de tous les modules qui ne pouvait pas être construit correctement. Souvent, vous pouvez résoudre ce problème en installant un paquet Ubuntu, et en relançant faire.
Il est assez commun d'avoir un problème parce qu'il vous manque l'-dev addon pour certains module ou autres. Mais parfois, vous devez recommencer comme ceci:
De départ de plus ne fait jamais de mal si vous n'êtes pas sûr. Une remarque importante à propos de l'étape 6. Je ne suis pas à l'aide de sudo sur cette commande, ce qui signifie que vous aurez besoin d'avoir le /home/python27 répertoire déjà créé avec la propriété appropriée.
N'hésitez pas à essayer
./configure --help |less
avant de construire quelque chose car il y a peut être des options intéressantes que vous pouvez utiliser. Une fois sur une distribution minimale que j'avais à faire-avec-dbmliborder=gdbm:bdb afin d'obtenir gdbm de travail. Lorsque vous exécutez ./configurer, le dernier quelques lignes de vous dire où il a mis les informations que l'on a appris. Dans le cas de Python, Modules/Configuration a été utile pour comprendre comment obtenir un module de construire.Une autre chose utile est de
make clean
puis exécutezmake >make.out 2>&1
pour capturer toutes les données de sortie à partir de la pleine rendre le processus. Puis, après qu'il est terminé, utilisezless
ou un éditeur de regarder pour plus de détails sur un problème de module comme _sqlite. Par exemple, cochez toutes les options-I qui sont passés àgcc
. Si le répertoire n'est pas sur la liste qui pourrait poser problème. Vous pouvez modifiersetup.py
pour modifier la liste des répertoires include.Dans le passé, il était plus courant d'avoir des problèmes de bibliothèque qui serait fixé par la déconnexion, de vous connecter à nouveau, et en cours d'exécution "sudo ldconfig" avant de faire une reconstruction complète.
make
commande de nouveau après l'exécution de apt-get. Avez-vous apporter de nouveau?make.out
. Le problème devrait être indiqué dans la sortie de la faire.où elle tente de construire le module sqlite.sharedmods