Je souhaite réexaminer la question comme indiqué dans PYTHONPATH vs. sys.path. Fondamentalement, il est préoccupé par le développement d'un paquet comme:PYTHONPATH vs. sys.path (RELOADED)
Project
setup.py
package
__init__.py
lib.py
script.py
En supposant script.py
ne from package.lib import foo
il ne fonctionne pas lors de l'appel:
python -m package.script
à partir du répertoire où setup.py
est assis, mais pas lors de l'appel (sur les fenêtres, CPython 2.7):
.\package\script.py
ImportError: No module named package
En premier cas, lors de l'impression est entrée sys.path
premier ''
, mais dans le second cas, la première entrée est le chemin absolu où script.py
est assis. Et bien sûr dans ce cas, il ne sait rien à propos de package
et l'importation échoue. Ce sera également le cas lors d'un double-clic dans Explorer.
Le original stackoverflow question recommande l'installation du paquet par setup.py develop
. Cependant, dans le setuptools 3.5 actuel (je suis conscient + confondu du renommer de distutils/setuptools) cette option n'est même pas documentée (j'ai setuptools 3.4.x, mais je ne l'ai pas essayé). Procedere est sur windows (pour CPython 2.7 mais aussi avec Python 3 en tête) pour double-cliquer sur le fichier et l'avoir travail. Importations relatives
Pour en savoir plus sur le fonctionnement de sys.path, consultez la réponse http://stackoverflow.com/a/38403654/850326 – djhaskin987
pour l'erreur "no module named": http://stackoverflow.com/questions/23417941/python -import-error-no-module-named-does-exists/40883739 # 40883739 – JinSnow