Ce qui suit ne résout pas le problème du PO, mais le titre et l'erreur sont exactement ce à quoi j'ai été confronté.
Si votre projet contient un setup.py
script, vous pouvez installer le package dans lequel vous vous trouvez, avec python3 -m pip install -e .
ou python3 setup.py install
ou python3 setup.py develop
, et ce package sera installé, mais toujours modifiable (les modifications du code seront donc visibles lors de l'importation du package). S'il n'en a pas setup.py
, donnez-lui un sens .
Quoi qu'il en soit, le problème auquel OP est confronté ne semble plus exister?
fichier one.py
:
def function():
print("output")
fichier two.py
:
import one
one.function()
chmod +x two.py
./two.py
Command line output: output
D'autres solutions semblent `` sales ''
Dans le cas d'OP avec 2 fichiers de test, les modifier pour qu'ils fonctionnent est probablement très bien. Cependant, dans d'autres scénarios réels, les méthodes énumérées dans les autres réponses ne sont probablement pas recommandées. Ils vous obligent à modifier le code python ou à restreindre votre flexibilité (exécuter le fichier python à partir d'un répertoire spécifique) et introduisent généralement des ennuis. Et si vous venez de cloner un projet et que cela se produit? Cela fonctionne probablement déjà pour d'autres personnes et il n'est pas nécessaire d'apporter des modifications au code. La réponse choisie veut également que les gens exécutent un script à partir d'un dossier spécifique pour le faire fonctionner. Cela peut être une source de désagrément à long terme, ce qui n'est jamais bon. Il suggère également d'ajouter votre dossier python spécifique à PATH (peut être fait via python ou en ligne de commande). Encore une fois, que se passe-t-il si vous renommez ou déplacez le dossier dans quelques mois? Vous devez à nouveau rechercher cette page, et finalement découvrez que vous devez définir le chemin (et que vous l'avez fait exactement il y a quelques mois), et que vous devez simplement mettre à jour un chemin (vous pouvez certainement utiliser sys.path et le définir par programme, mais cela peut encore être irrégulier ). De nombreuses sources de grande gêne.
import sys; sys.path