2011-10-31 6 views
6

J'ai regardé autour depuis un certain temps mais je ne trouve tout simplement pas la réponse. Des questions similaires se rapportent à des cas difficiles avec des bibliothèques tierces et tous, mais ma situation semble être simple d'un manuel. Néanmoins, je ne peux pas comprendre comment cela fonctionne. J'utilise Eclipse 3.5.2, Pydev 2.2.0, sur une machine Ubuntu 11.04.Importer depuis un autre projet dans pydev

Mon cas semble simple: je veux écrire un paquet comme son propre projet, puis je veux écrire une application en utilisant ce paquet dans un autre projet.

Comment dois-je pydev de configuration afin que je puisse avoir ces deux projets « de base » (le paquet) et « app » (qui utilise le paquet de base), et à l'intérieur « app » faire:

import core 

?

  • J'ai ajouté le noyau aux références du projet de l'application, mais il ne fait rien quoi que ce soit.
  • J'ai ajouté/core/aux dossiers de source (j'ai dû forcer pour cela parce qu'il n'était pas montrant dans la liste), cela n'a pas fonctionné (donc je l'ai enlevé).
  • J'ai ajouté/full/path/to/core aux bibliothèques externes, cela ne fonctionne toujours pas.

Par "ne fonctionne pas", je veux dire que je reçois un "import import: core", toujours.

Des idées?

Répondre

8

Pourvu que vous ayez 2 projets avec le PYTHONPATH correctement défini (par l'intermédiaire de dossiers source), il devrait fonctionner en ajoutant simplement une référence de projet.

Peut-être un exemple peut aider ...

par exemple .:

project1 
project1/src <-- this should be set as the source folder 
project1/src/core 
project1/src/core/__init__.py 

project2 
project2/src <-- this should be set as the source folder 
project2/src/app 
project2/src/app/__init__.py 

puis modifier les propriétés de Project2> références de projet et sélectionnez « Projet1 » pour pouvoir accéder au project1 du projet2.

+3

Merci, je l'ai eu à travailler maintenant! 1) Je n'ai pas besoin d'ajouter quoi que ce soit de project1 dans les dossiers pythonpath ou source du projet 2. 2) Nommer mon projet "core" n'est pas suffisant même s'il a un __init__.py: j'ai besoin d'un paquet "core" approprié. 3) En outre, le redémarrage d'eclipse (fichier/redémarrage) était nécessaire. Yay! – Niriel

0

Je n'ai pas obtenu ce travail en ajoutant une référence de projet. Cependant, je l'ai fait fonctionner en supprimant d'abord puis en ajoutant la nature du projet pydev au projet, puis en définissant la référence du projet.

1

J'avais été dans le même problème pendant un moment.
Maintenant, j'ai compris comment je peux importer la classe ou la fonction du module et du paquet dans d'autres projets.
Je me suis retrouvé bête à cause de ça parce que c'est toujours facile.

Conclusion!
Tout ce que vous avez à faire est simplement de vérifier le nom du projet dans 'Références du projet', Fichier/Propriétés/Références du projet.
En termes d'utilisation d'importation, la référence à un autre projet est la même que si vous avez placé tous les fichiers ou modules dans votre répertoire de projet actuel. J'utilise liclipse_1.0.0_win32.x86_64 sur Windows 7.

Voyons-moi des exemples.
Il y a deux projets A et B et le projet A a le module a1.py et le paquet 'M'.
Vous travaillez sur un projet B et vérifiez la référence d'un projet dans l'arbre de projet suivant.

|-- A 
| |-- M 
| | |-- __init__.py 
| | `-- m1.py 
| `-- a1.py 
`-- B 
    `-- b1.py 

# a1.py 
def say_a(): 
    print "I'm A" 

# m1.py 
def say_m(): 
    print "I'm M" 

Vous pouvez maintenant accéder au projet A comme suit. En fait, l'instruction d'importation python est un peu étrange pour moi que vous pouvez trouver une autre façon de faire la même chose.
En outre, si vous voulez exécuter b1.py à partir de la ligne de commande Linux, voyez ceci.

~/tmp/pydemo/B $ PYTHONPATH = ../A python b1.py

+0

Cela a fonctionné pour moi, merci – Sergio

Questions connexes